STL—— 容器(vector)元素的删除
1. clear() 将整个 vector 都删除
使用 vectorname.clear() 可以将整个vector 中的元素全部删除,但是内存不会释放,如下代码:
#include <iostream> #include <vector> using namespace std; int main() { vector<int>num(5, 111); cout << "=== 使用 clear() 删除前===" << endl; cout << "num 的元素个数:" << num.size() << endl; cout << "num 容器的大小:" << num.capacity() << endl << endl; cout << "=== 使用 clear() 删除后===" << endl; num.clear(); cout << "num 的元素个数:" << num.size() << endl; cout << "num 容器的大小:" << num.capacity() << endl; return 0; }
打印结果:
2. 使用 erase() 删除 单个&多个 元素
使用 vectorname.clear() 可以删除容器中的单个&多个元素,他返回的是一个迭代器,是删除之后的后一个元素的地址。
删除单个元素:
#include <iostream> #include <vector> using namespace std; int main() { int test[] = { 111,222,333,444,555,666 }; vector<int>num(test, test + 6); cout << "num 的元素个数:" << num.size() << endl; cout << "num 容器的大小:" << num.capacity() << endl; cout << "=== 从头到尾遍历容器 ===" << endl; for (int i = 0; i < num.size(); i++) { cout << num[i] << endl; } vector<int>::iterator it = num.erase(num.begin() + 3); //删除首地址后的第三个元素,并将后一个元素的地址返回 cout << "num 的元素个数:" << num.size() << endl; cout << "num 容器的大小:" << num.capacity() << endl; cout << endl << "=== 使用一个迭代器类型的 it 遍历容器 ===" << endl; for (int i = 0; i < num.size() - 3; i++) { cout << *it++ << endl; } return 0; }
打印结果:
删除多个元素:
#include <iostream> #include <vector> using namespace std; int main() { int test[] = { 111,222,333,444,555,666 }; vector<int>num(test, test + 6); cout << "num 的元素个数:" << num.size() << endl; cout << "num 容器的大小:" << num.capacity() << endl; cout << "=== 从头到尾遍历容器 ===" << endl; for (int i = 0; i < num.size(); i++) { cout << num[i] << endl; } vector<int>::iterator it = num.erase(num.begin(), num.begin() + 3); //删除1-3的元素,并将后一个元素的地址返回 cout << "num 的元素个数:" << num.size() << endl; cout << "num 容器的大小:" << num.capacity() << endl; cout << endl << "=== 使用一个迭代器类型的 it 遍历容器 ===" << endl; for (int i = 0; i < num.size(); i++) { cout << *it++ << endl; } return 0; }
打印结果:
==========================================================================================================================
相关推荐
willluckysmile 2019-06-29
风和日丽 2019-06-20
gaojunonly 2011-07-13
JayFighting 2020-06-28
Chenliaoyuan 2020-06-11
星辰大海的路上 2020-06-10
myveer 2020-06-01
willluckysmile 2020-05-03
shayuchaor 2020-04-20
fengyun 2020-04-17
htofly 2020-03-27
MrFuWen 2020-02-22
yuanye0 2019-12-09
laohyx 2019-11-03
shenxiuwen 2019-10-31
lixinghui0 2011-05-02
nimeijian 2019-10-21