首页 > 学院 > 开发设计 > 正文

使用STL vector的几种清空容器(删除)办法

2019-11-06 06:10:26
字体:
来源:转载
供稿:网友

在vector中添加500个元素:

vector <int> vecInt; for (int i=0;i<500;i++) { vecInt.push_back(i); } int j= vecInt.capacity(); //j=512 i = vecInt.size(); //i=500

第一种办法使用 clear ,清空元素,但不回收空间

vecInt.clear(); j= vecInt.capacity(); //j=512 i = vecInt.size(); //i=0

第二种办法使用 erase循环删除,结果同上

vector <int>::iterator iter=vecInt.begin();for ( ;iter!=vecInt.end();){ iter=vecInt.erase(iter);}j= vecInt.capacity(); //j=512i = vecInt.size(); //i=0

erase在每次操作时,迭代器指针会整体前移1,就是每次都会“搬”全部数据,所以vector不适合做频繁删除的容器

第三种办法 最简单的使用swap,清除元素并回收内存

vector <int>().swap(vecInt); //清除容器并最小化它的容量,// vecInt.swap(vector<int>()) ; 另一种写法j= vecInt.capacity(); //j=0 i = vecInt.size(); //i=0

vector<T>().swap(vec);//清空容器

vector<Contestant> v;string s;// 使用v和svector<Contestant>().swap(v); // 清除v而且最小化它的容量string().swap(s); // 清除s而且最小化它的容量
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表