#include<iostream>
#include<forward_list>
#include<vector>
int main()
{
using namespace std;
vector<int>vec;
cout << "vec:size" << vec.size()
<< "capacity:" << vec.capacity() << endl;
for (vector<int>::size_type i = 0; i != 24; ++i)
vec.push_back(i);
vec.reserve(100);
cout << "vec:size" << vec.size()
<< "capacity:" << vec.capacity() << endl;
while (vec.size() != vec.capacity())//用完内存空间,不会重新分配
vec.push_back(10);
cout << "vec:size" << vec.size()
<< "capacity:" << vec.capacity() << endl;
vec.push_back(20);//此时超出预留空间,所以容器会出现分配内存空间
cout << "vec:size" << vec.size()
<< "capacity:" << vec.capacity() << endl;
return 0;
}
capacity至少要与size一样大,具体分配多少额外空间视标准库而定。由上述例子,我们发现当vector为空时,并不需要额外空间;当添加了24个元素后发现,标准库分配了4个备用内存;继续向vector中添加元素,直到不超过预留空间;当继续添加元素,超过原有capacity时,vector将不得不重新分配内存空间。