vector容器在不同环境下的内存分配
按照STL原码剖析的说法:vector在新增元素时,如果超过当时的容量,则容量会扩充至两倍。
我简单试了一下vector容器在Windows下用vs 2017分配的情况,以一下代码为例:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int i;
vector<int>iv(2, 9);
cout << "size=" << iv.size() << endl;
cout << "capacity=" << iv.capacity() << endl;
iv.push_back(1);
cout << "size=" << iv.size() << endl;
cout << "capacity=" << iv.capacity() << endl;//为什么不是4
return 0;
}
输出结果:
vector容量并没有扩展至两倍,而是只增加了一个元素空间给新增加的元素使用。
接下来在linux上试验
试验结果:
可以看到当vector在新增元素时,如果超过当时的容量,则容量会扩充至两倍,所以最后的容量为4,实际大小3。
感兴趣欢迎关注微信公众号:黑马金牌编程