学cpp的人都知道,vector类似于动态数组,可以动态调整内存大小,也就是刚开始定义的时候回分配一个初始内存,如果之后的操作超过了这个大小,就会分配两倍内存大小,然后删除之前的内存,并复制数据过去,测试如下:
1.
#include <iostream>
#include <vector>using namespace std;
int main()
{
vector <int> test;
for (int i = 0; i < 10; i++)
{
test.push_back(i);
}
cout << sizeof(test) << endl; //变量test始终是16(vc里面的大小)
cout << test.capacity() << endl; //capacity是编译器分配的内存池,是16的整数倍
cout << test.size() << endl; //size是里面数据的个数
return 0;
}
2.
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector <int> test;
for (int i = 0; i < 40; i++)
{
test.push_back(i);
}
cout << sizeof(test) << endl;
cout << test.capacity() << endl;
cout << test.size() << endl;
return 0;
}