#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int main(){
int i;
vector<int>iv(2, 9);
cout << "Size = " << iv.size() << endl;
cout << "capacity = " << iv.capacity() << endl;
iv.push_back(1);
cout << "Size = " << iv.size() << endl;
cout << "capacity = " << iv.capacity() << endl;
iv.push_back(2);
cout << "Size = " << iv.size() << endl;
cout << "capacity = " << iv.capacity() << endl;
iv.push_back(3);
cout << "Size = " << iv.size() << endl;
cout << "capacity = " << iv.capacity() << endl;
iv.push_back(4);
cout << "Size = " << iv.size() << endl;
cout << "capacity = " << iv.capacity() << endl;
for (int i = 0; i < iv.size(); ++i){
cout << iv[i] << ' ';
}
cout << endl;
iv.push_back(5);
cout << "Size = " << iv.size() << endl;
cout << "capacity = " << iv.capacity() << endl;
for (int i = 0; i < iv.size(); ++i){
cout << iv[i] << ' ';
}
cout << endl;
iv.pop_back();
iv.pop_back();
cout << "Size = " << iv.size() << endl;
cout << "capacity = " << iv.capacity() << endl;
iv.pop_back();
cout << "Size = " << iv.size() << endl;
cout << "capacity = " << iv.capacity() << endl;
vector<int>::iterator ivite = find(iv.begin(), iv.end(), 1);
if (ivite != iv.end())
iv.erase(ivite);
cout << "Size = " << iv.size() << endl;
cout << "capacity = " << iv.capacity() << endl;
for (int i = 0; i < iv.size();++i)
{
cout << iv[i] << " ";
}
cout << endl;
ivite = find(iv.begin(), iv.end(), 2);
if (ivite != iv.end())
iv.erase(ivite);
cout << "Size = " << iv.size() << endl;
cout << "capacity = " << iv.capacity() << endl;
for (int i = 0; i < iv.size(); ++i)
{
cout << iv[i] << " ";
}
cout << endl;
iv.clear();
cout << "Size = " << iv.size() << endl;
cout << "capacity = " << iv.capacity() << endl;
getchar();
getchar();
return 0;
}
当我们使用push_back插入元素的时候,函数首先会检查是否还有备用空间,如果有就直接在备用空间上调用构造函数,并调整迭代器finish,使vector变大,如果没有足够的空间,就重新配置,移动数据,然后释放源空间