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的更多相关文章
- STL Set和multiset 容器
STL Set和multiset 容器 set/multiset的简介 set是一个集合容器,其中所包含的元素是唯一的,集合中的元素按一定的顺序排列. 元素插入过程是按排序规则插入,所以不能指定插入位 ...
- STL容器及算法题:删除奇数的QQ号
最近思考到这样一个题目:在STL的set和vector容器里存储了1亿个QQ号,编写函数删除奇数QQ号. 1. STL容器简介 首先了解一下 set 和 vector 以及其他类似的 STL 容器: ...
- STL容器内数据删除
STL中的容器按存储方式分为两类,一类是按以数组形式存储的容器(如:vector .deque):另一类是以不连续的节点形式存储的容器(如:list.set.map).在使用erase方法来删除元素时 ...
- STL容器删除元素的陷阱
今天看Scott Meyers大师的stl的用法,看到了我前段时间犯的一个错误,发现我写的代码和他提到错误代码几乎一模一样,有关stl容器删除元素的问题,错误的代码如下:std::vector< ...
- STL容器的遍历删除
STL容器的遍历删除 今天在对截包程序的HashTable中加入计时机制时,碰到这个问题.对hash_map中的每个项加入时间后,用查询函数遍历hash_map,以删除掉那些在表存留时间比某个阈值长的 ...
- STL容器 erase的使用陷井
http://www.cppblog.com/beautykingdom/archive/2008/07/09/55760.aspx?opt=admin 在STL(标准模板库)中经常会碰到要删除容器中 ...
- STL容器迭代过程中删除元素技巧(转)
1.连续内存序列容器(vector,string,deque) 序列容器的erase方法返回值是指向紧接在被删除元素之后的元素的有效迭代器,可以根据这个返回值来安全删除元素. vector<in ...
- 怎么删除STL容器的元素
在STL容器有顺序容器和关联容器两种. 顺序容器删除元素的方法有两种: 1.c.erase(p) 从c中删除迭代器p指定的元素.p必须指向c中一个真实元素,不能等于c.end().返回一个指向p之后元 ...
- 删除STL容器中的元素
有关stl容器删除元素的问题,错误的代码如下: std::vector<struct> mFriendList; ... std::vector<struct>::iterat ...
- STL——容器(Set & multiset)的默认构造 & 带参构造 & 对象的拷贝构造与赋值
1. 默认构造 set<int> setInt; //一个存放int的set容器. set<float> setFloat; //一 ...
随机推荐
- ceph luminous bluestore热插拔实现
需求描述 在某些测试场景下面,需要满足能够拔盘以后在插入的时候能够自动上线磁盘,这个需求实际在生产中是不建议使用的,原因是插入的磁盘如果本身存在问题,那么拉起的操作可能会破坏了本身集群的稳定性,所以这 ...
- ceph卡在active+remapped状态
最近看到了有人的环境出现了出现了卡在active+remapped状态,并且卡住不动的状态,从pg的状态去看,这个pg值分配了主的pg,没有分配到副本的osd,集群的其他设置一切正常 这个从网上搜寻到 ...
- EOF和scanf函数
EOF和scanf函数 scanf函数的返回值 scanf函数返回成功读入的数据项数,读入数据时遇到了"文件结束(end of file)"或者错误则返回EOF,EOF定义为int ...
- CTF-Web-强网杯 2019-随便注
题目链接 题目链接-supersqli FUZZ测试 fuzz出,order by测出数据库查询列数2列,注释符号#,select|update|delete|drop|insert|where|被过 ...
- webug第十关:文件下载
第十关:文件下载 点击下载 将fname改为download.php....不过好像它的配置有点问题
- 你了解ABBYY FineReader 14么?
有没有一款是能够同时处理纸质文档和个类型PDF的一站式解决方案?答案是肯定的,ABBYY FineReader 14集合了强大的光学字符识别(OCR)以及 PDF 查看和编辑功能.不仅能够高效识别图片 ...
- 接上一篇:(四) 控制反转(IOC)/ 依赖注入(DI)
spring 核心功能:beans.core.context.expression Spring设计理念 Spring是面向Bean的编程 Spring三个核心组件(Core.Context.Bean ...
- 以注解的方式实现api和provider
1.provider import com.alibaba.dubbo.config.annotation.Service; import facade.EchoService; import com ...
- 用PyCharm打个专业的招呼
PyCharm 是什么 PyCharm(读作"拍恰姆")是 JetBrains 全家桶中的一员,专门用来写 Python 的: 官方网址是: https://www.jetbrai ...
- LeetCode 029 Divide Two Integers
题目要求:Divide Two Integers Divide two integers without using multiplication, division and mod operator ...