在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=0erase在每次操作时,迭代器指针会整体前移1,就是每次都会“搬”全部数据,所以vector不适合做频繁删除的容器
第三种办法 最简单的使用swap,清除元素并回收内存
vector <int>().swap(vecInt); //清除容器并最小化它的容量,// vecInt.swap(vector<int>()) ; 另一种写法j= vecInt.capacity(); //j=0 i = vecInt.size(); //i=0vector<T>().swap(vec);//清空容器
新闻热点
疑难解答