您的位置:首页 > 其它

swap 去除vector多余的容量

2015-12-22 22:28 267 查看
#include "stdafx.h"
#include <vector>
#include <iostream>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
vector<char> tempBufferVec(10);
cout<<tempBufferVec.size ()<<endl;//10
cout<<tempBufferVec.capacity ()<<endl<<endl;//10

vector<char>(tempBufferVec).swap(tempBufferVec);
cout<<tempBufferVec.size ()<<endl;//10
cout<<tempBufferVec.capacity ()<<endl<<endl;//10

tempBufferVec.reserve (20);
cout<<tempBufferVec.size ()<<endl;//10
cout<<tempBufferVec.capacity ()<<endl<<endl;//20

vector<char>(tempBufferVec).swap(tempBufferVec);
cout<<tempBufferVec.size ()<<endl;//10
cout<<tempBufferVec.capacity ()<<endl<<endl;//10

return 0;
}


即;

先创建一个临时拷贝与原先的vector一致,值得注意的是,此时的拷贝 其容量是尽可能小的符合所需数据的。紧接着将该拷贝与原先的vector 进行 交换。执行交换后,临时变量会被销毁,内存得到释放。此时的v即为原先
的临时拷贝,而交换后的临时拷贝则为容量非常大的vector(不过已经被销毁)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: