vector中的size表示什么?capacity有表示什么?有什么区别,他们是怎么增长的
size 其实表示的实际的数据的多少,而capacity表示的为了能够接收这些数据,vector所开的空间。
就向我们生成了一个100个int类型的数组,而实际上就存放了10个数字,则100就是capacity,10就是size;
但是他们是怎么样增加的呢?是capacity是在什么时候增长的呢?,他增长的又是多少呢?
我做了个实验,在windows xp上 VC6
#include <iostream>
#include <vector>
using namespace std;
int main()
{
//size is 实际的大小
//capacity 是vector 所能容纳数据的空间大小,一般是动态增长的
vector<int> vec;
cout<<"the vec size is" <<vec.size()<<endl;
cout<<"the vec caption is "<<vec.capacity()<<endl;
for (int i=1;i<100;i++)
{
vec.push_back(i);
cout<<"the vec size is "<<vec.size()<<endl;
cout<<"the vec caption is "<<vec.capacity()<<endl;
}
return 0;
}
实际的数据我们看到,他是在插入数据的时候,根据size的情况和当然要插入的数据的容量大小来动态增长的,但是主要的我们看到,他增长的是有规律的,就是在2的倍数上增长的,如1,2,4.。。128 增长的,当size的大小已经等于capacity的时候,就动态以2的倍数的增长。因此可以想到,在push_back的时候,系统进行了SIZE和capacity的大小的比较。