STL——容器(Set & multiset)的删除 erase

Posted coocochoco

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STL——容器(Set & multiset)的删除 erase相关的知识,希望对你有一定的参考价值。

set.clear();             //清除所有元素

set.erase(pos);     //删除pos迭代器所指的元素,返回下一个元素的迭代器。

set.erase(beg,end);    //删除区间[beg,end)的所有元素,返回下一个元素的迭代器。

set.erase(elem);     //删除容器中值为elem的元素。

 

代码例子:

 1 #include <iostream>
 2 #include <set>
 3 
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     set<int> setInt;
 9 
10     cout << "第一次遍历setInt,没有任何元素:";
11     for (set<int>::iterator it = setInt.begin(); it != setInt.end(); it++)
12     {
13         cout << *it << " ";
14     }
15 
16     //在容器中插入元素
17     cout << endl << "插入20个元素" << endl << endl;
18     for (int i = 0; i < 20; i++)
19     {
20         setInt.insert(i);
21     }
22     cout << "插入20个元素后的第二次遍历setInt" << endl;
23     for (set<int>::iterator it = setInt.begin();it!=setInt.end(); it++)
24     {
25         cout << *it << " ";
26     }
27     cout << endl;
28     
29     //删除迭代器所指的元素,返回下一个元素的迭代器。
30     cout << "删除迭代器所指的元素 5 " << endl;
31     for (set<int>::iterator it = setInt.begin(); it != setInt.end();)
32     {
33         if (*it == 5)
34         {
35             it = setInt.erase(it);        //由于会返回下一个元素的迭代器,相当于进行了it++的操作
36         }
37         else
38         {
39             it++;
40         }
41     }
42     cout << endl << "删除迭代器所指的元素 5 后遍历 setInt:" << endl;
43     for (set<int>::iterator it = setInt.begin();  it != setInt.end(); it++)
44     {
45         cout << *it << " ";
46     }
47     cout << endl;
48 
49     //删除区间(beg,end)的所有元素,返回下一个元素的迭代器。
50     cout << endl << "删除元素 15 之后的所有元素";
51     for (set<int>::iterator it = setInt.begin(); it != setInt.end();)
52     {
53         if (*it == 15)
54         {
55             //如果找到15,删除15之后所有的元素,由于会返回下一个元素的迭代器,相当于进行了it++的操作
56             it = setInt.erase(it, setInt.end());
57         }
58         else
59         {
60             it++;
61         }
62     }
63     cout << endl << "删除元素 15 之后的所有元素后遍历 setInt:";
64     for (set<int>::iterator it = setInt.begin(); it != setInt.end(); it++)
65     {
66         cout << *it << " ";
67     }
68     cout << endl;
69 
70     // 删除容器中值为elem的元素
71     cout << endl << "删除元素 10";
72     setInt.erase(10);
73     cout << endl << "删除元素 10 之后遍历 setInt:";
74     for (set<int>::iterator it = setInt.begin(); it != setInt.end(); it++)
75     {
76         cout << *it << " ";
77     }
78     cout << endl;
79 
80     //清除所有元素
81     cout << endl << "删除所有元素";
82     setInt.clear();    
83     cout << endl << "删除所有元素之后遍历 setInt:";
84     for (set<int>::iterator it = setInt.begin(); it != setInt.end(); it++)
85     {
86         cout << *it << " ";
87     }
88     cout << endl;
89 
90     return 0;
91 }

打印结果:

技术图片

 

 

 

 

 

 

 

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

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

C++ STL set和multiset的使用

STL——容器(Set & multiset)的迭代器

STL——容器(Set & multiset)的迭代器

STL map&set用法详解

STL map&set用法详解

STL——容器(Set & multiset)的删除 erase