9-4 vector对象是如何增长的

.size():容器中有多少元素.capacity():不重新分配内存时,可容纳多少元素.reserve(n):分配至少能容纳n个元素的内存- n>capacity时会分配使得capacity >= n
- n<=capacity时什么也不做

reserve()永远不会减少容器的内存空间;shrink_to_fit()也不能保证一定会被执行
int main(){
vector<int> ivec;
//size=0;capacity依赖具体实现
cout<<" size = "<<ivec.size()
<<" capacity = "<<ivec.capacity()<<endl;
//向ivec添加24个元素
for(int ix = 0; ix !=24; ++ix)
ivec.push_back(ix);
//size为24,capacity >= 24,具体值依赖实现
cout<<" size = "<<ivec.size()
<<" capacity = "<<ivec.capacity()<<endl;
return 0;
}

可以用reverse()预分配空间
int main(){
vector<int> ivec;
ivec.reserve(50);
for(int ix = 0; ix != 24; ++ix)
ivec.push_back(ix);
cout<<" size = "<<ivec.size()
<<" capacity = "<<ivec.capacity()<<endl;
return 0;
}


浙公网安备 33010602011771号