STL—— 容器(vector)元素的删除

Posted coocochoco

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 }

 

 打印结果:

技术图片

 

 

 

 

 

 

 

 

==========================================================================================================================

以上是关于STL—— 容器(vector)元素的删除的主要内容,如果未能解决你的问题,请参考以下文章

STL容器总结

STL容器及适配器

仅通过迭代器删除 STL 容器元素

STL之vector

C++ STL 之 deque

C++ STL容器在for循环中删除迭代器 正确方法 it++正确吗