//9.30.cpp
//编写程序研究标准库为vector对象提供的内存分配策略
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> ivec;
//空vector容器的size为0,标准库中的capacity也为0
cout<< "ivec:size: "<<ivec.size()
<< " capacity: "<<ivec.capacity()<<endl;
//添加24个元素
for(vector<int>::size_type ix=0;ix!=24;++ix)
{
ivec.push_back(ix);
//size应为24,容量>=24,具体由实现而定
cout<< "ivec.size: "<<ivec.size()
<< " capacity: "<<ivec.capacity()<<endl;
}
//预留额外的存储空间
ivec.reserve(50); //设置容量至少为50,也可以更多
//size应为24;容量>=50,具体由实现而定
cout<< "ivec:size: "<<ivec.size()
<< " capacity: "<<ivec.capacity()<<endl;
//将预留的容量用完
while(ivec.size()!=ivec.capacity())
ivec.push_back(0);
//size应为50;容量不变
cout<<"ivec:size: "<<ivec.size()
<<" capacity: "<<ivec.capacity()<<endl;
//继续添加新元素,vector必须为自己从新分配存储空间
ivec.push_back(42);
//size应为51;容量将大于等于51,具体右实现而定
cout<<"ivec:size:"<<ivec.size()
<<" capacity: "<<ivec.capacity()<<endl;
return 0;
}