STL vector 清空的几种方法
2018-02-02 本文已影响2919人
SilentSummer
vector<int> vecInt;
for (int i = 0; i < 500; i++) {
vecInt.push_back(i);
}
int capacity = vecInt.capacity(); //512
int size = vecInt.size(); //500
1. 直接赋值替换
清空元素,但不回收空间
vecInt = {501};
int capacity = vecInt.capacity(); //512
int size = vecInt.size(); //1
2. clear()
使用clear()成员函数,清空元素,但不回收空间
vecInt.clear();
int capacity = vecInt.capacity(); //512
int size = vecInt.size(); //0
3. erase()
使用erase()成员函数,但需要使用迭代器逐个删除
for (auto iter = vecInt.begin(); iter != vecInt.end(); ){
iter = vecInt.erase(iter);
}
int capacity = vecInt.capacity(); //512
int size = vecInt.size(); //0
注意:erase()自动返回下一个元素的迭代器。
4. swap()
使用swap()成员函数,清除元素并回收内存
vector<int>().swap(vecInt); //清除容器并最小化其容量
int capacity = vecInt.capacity(); //0
int size = vecInt.size(); //0
参考: