以vector容器为例,我们在使用容器的时候,使用push_back函数的时候,容器会预留一些空间。为了防止容量的浪费,我们采用swap的方式。
#include<iostream>
using namespace std;
#include<vector>
void text()
{
vector<int>v;
for(int i=0;i<10;++i)
{
v.push_back(i);
}
//删除前
cout<<"V size:"<<v.size()<<endl;
cout<<"V capacicy:"<<v.capacity()<<endl;
//删除后
v.erase(v.begin());
cout<<"V size:"<<v.size()<<endl;
cout<<"V capacicy:"<<v.capacity()<<endl;
//交换后
vector<int>(v).swap(v);
cout<<"V size:"<<v.size()<<endl;
cout<<"V capacicy:"<<v.capacity()<<endl;
}
int main()
{
text();
system("pause");
return 0;
}
结果我们可以看到:
V size:10
V capacicy:16
这是第一次显示容器的大小和容量,我们发现输入了十个数据之后,容器的大小为10,而容器的容量为16
V size:9
V capacicy:16
这是在删除了一个数据后,第二次显示容器的大小和容量,我们发现大小改变了,而容量仍然未变。
V size:9
V capacicy:9
这是用swap 匿名对象 交换了容器,我们可以看到现在容器的容量为9,和容器的大小相等。原有的16空间释放,现有的9大小保,。节约了容量。