码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-06-08 09:15:30      阅读:54      评论:0      收藏:0      [点我收藏+]

标签:names   multi   load   mamicode   mes   图片   stl   else   返回   

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

标签:names   multi   load   mamicode   mes   图片   stl   else   返回   

原文地址:https://www.cnblogs.com/CooCoChoco/p/13063410.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!