STL—— 容器(vector)元素的删除
1. clear() 将整个 vector 都删除
使用 vectorname.clear() 可以将整个vector 中的元素全部删除,但是内存不会释放,如下代码:
1 #include <iostream> 2 #include <vector> 3 4 using namespace std; 5 6 int main() 7 { 8 vector<int>num(5, 111); 9 cout << "=== 使用 clear() 删除前===" << endl; 10 cout << "num 的元素个数:" << num.size() << endl; 11 cout << "num 容器的大小:" << num.capacity() << endl << endl; 12 13 cout << "=== 使用 clear() 删除后===" << endl; 14 num.clear(); 15 cout << "num 的元素个数:" << num.size() << endl; 16 cout << "num 容器的大小:" << num.capacity() << endl; 17 18 return 0; 19 }
打印结果:
2. 使用 erase() 删除 单个&多个 元素
使用 vectorname.clear() 可以删除容器中的单个&多个元素,他返回的是一个迭代器,是删除之后的后一个元素的地址。
删除单个元素:
1 #include <iostream> 2 #include <vector> 3 4 using namespace std; 5 6 int main() 7 { 8 int test[] = { 111,222,333,444,555,666 }; 9 vector<int>num(test, test + 6); 10 cout << "num 的元素个数:" << num.size() << endl; 11 cout << "num 容器的大小:" << num.capacity() << endl; 12 13 cout << "=== 从头到尾遍历容器 ===" << endl; 14 for (int i = 0; i < num.size(); i++) 15 { 16 cout << num[i] << endl; 17 } 18 vector<int>::iterator it = num.erase(num.begin() + 3); //删除首地址后的第三个元素,并将后一个元素的地址返回 19 20 cout << "num 的元素个数:" << num.size() << endl; 21 cout << "num 容器的大小:" << num.capacity() << endl; 22 23 cout << endl << "=== 使用一个迭代器类型的 it 遍历容器 ===" << endl; 24 25 for (int i = 0; i < num.size() - 3; i++) 26 { 27 cout << *it++ << endl; 28 } 29 30 return 0; 31 }
打印结果:
删除多个元素:
1 #include <iostream> 2 #include <vector> 3 4 using namespace std; 5 6 int main() 7 { 8 int test[] = { 111,222,333,444,555,666 }; 9 vector<int>num(test, test + 6); 10 cout << "num 的元素个数:" << num.size() << endl; 11 cout << "num 容器的大小:" << num.capacity() << endl; 12 13 cout << "=== 从头到尾遍历容器 ===" << endl; 14 for (int i = 0; i < num.size(); i++) 15 { 16 cout << num[i] << endl; 17 } 18 19 vector<int>::iterator it = num.erase(num.begin(), num.begin() + 3); //删除1-3的元素,并将后一个元素的地址返回 20 cout << "num 的元素个数:" << num.size() << endl; 21 cout << "num 容器的大小:" << num.capacity() << endl; 22 23 cout << endl << "=== 使用一个迭代器类型的 it 遍历容器 ===" << endl; 24 25 for (int i = 0; i < num.size(); i++) 26 { 27 cout << *it++ << endl; 28 } 29 30 return 0; 31 }
打印结果:
==========================================================================================================================