vector是用數組做的,因此具備數組的優(具有下標,操作很快)缺(一旦數組大小定義好了就不允許再改變)點。當vector容器中加入新的元素時,若容器容量不夠,則創建新的更大容量的數組,再將原數組中的元素copy進來;
#include<iostream>
#include<vector>
int main()
{
std::vector<int> v;
int i = 0;
while (i++ < 30)
{
v.push_back(i);
std::cout << "容器大小:" << v.size() << "; 容器容量:" << v.capacity() << std::endl;
}
// 操作環境:window10,visual studio 2017, Debug, x86
/*輸出結果:(分析,先給容器分配一定容量,當容量不夠時,創建新的數組,將原數組中的元素copy進來,因此擴大容量過程比較耗時(copy數據操作),其容量自動增長50%(爲了避免頻繁地擴大容量,增長%多少和開發環境有關))
容器大小:1容器容量:1
容器大小:2容器容量:2
容器大小:3容器容量:3
容器大小:4容器容量:4
容器大小:5容器容量:6
容器大小:6容器容量:6
容器大小:7容器容量:9
容器大小:8容器容量:9
容器大小:9容器容量:9
容器大小:10容器容量:13
容器大小:11容器容量:13
容器大小:12容器容量:13
容器大小:13容器容量:13
容器大小:14容器容量:19
容器大小:15容器容量:19
容器大小:16容器容量:19
容器大小:17容器容量:19
容器大小:18容器容量:19
容器大小:19容器容量:19
容器大小:20容器容量:28
容器大小:21容器容量:28
容器大小:22容器容量:28
容器大小:23容器容量:28
容器大小:24容器容量:28
容器大小:25容器容量:28
容器大小:26容器容量:28
容器大小:27容器容量:28
容器大小:28容器容量:28
容器大小:29容器容量:42
容器大小:30容器容量:42
*/
v.reserve(100); // 將容器容量直接設置到100
std::cout << "after reserve,容器大小:" << v.size() << "; 容器容量:" << v.capacity() << std::endl;
system("pause");
return 0;
}