您的位置:首页 > 其它

检测vector空间自动分配策略

2016-04-14 21:23 295 查看
看过《STL源码剖析》可以知道vector空间的自动分配策略是空间加倍。

由于stl的版本比较多,针对常用的两个做下检测,vs2012与gcc 5.3.0

size():获取当前使用大小

capacity():获取当前容器大小

分配100万次检测一下。

代码

#include <vector>
#include <iostream>

void VectorTest()
{
std::vector<int> vTest;
for (int i = 0; i < 1000000; ++i)
{
vTest.push_back(1);
int nSize = vTest.size();
int nCapacity = vTest.capacity();
if (nSize == nCapacity)
{
std::cout<<nSize<<"\t"<<nCapacity<<std::endl;
}
}
std::cout<<std::endl;
};


实验结果:

vs2012 每次新增当前空间的1/2



g++ 5.3.0每次新增当前空间大小,亦即是倍增的

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: