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;
}