看过《STL源码剖析》可以知道vector空间的自动分配策略是空间加倍。
由于stl的版本比较多,针对常用的两个做下检测,vs2012与gcc 5.3.0
size():获取当前使用大小
capacity():获取当前容器大小
分配100万次检测一下。
代码
#include
#include
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<"\t"<std::endl;
}
}
std::cout<<std::endl;
};