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的更多相关文章

  1. STL Set和multiset 容器

    STL Set和multiset 容器 set/multiset的简介 set是一个集合容器,其中所包含的元素是唯一的,集合中的元素按一定的顺序排列. 元素插入过程是按排序规则插入,所以不能指定插入位 ...

  2. STL容器及算法题:删除奇数的QQ号

    最近思考到这样一个题目:在STL的set和vector容器里存储了1亿个QQ号,编写函数删除奇数QQ号. 1. STL容器简介 首先了解一下 set 和 vector 以及其他类似的 STL 容器: ...

  3. STL容器内数据删除

    STL中的容器按存储方式分为两类,一类是按以数组形式存储的容器(如:vector .deque):另一类是以不连续的节点形式存储的容器(如:list.set.map).在使用erase方法来删除元素时 ...

  4. STL容器删除元素的陷阱

    今天看Scott Meyers大师的stl的用法,看到了我前段时间犯的一个错误,发现我写的代码和他提到错误代码几乎一模一样,有关stl容器删除元素的问题,错误的代码如下:std::vector< ...

  5. STL容器的遍历删除

    STL容器的遍历删除 今天在对截包程序的HashTable中加入计时机制时,碰到这个问题.对hash_map中的每个项加入时间后,用查询函数遍历hash_map,以删除掉那些在表存留时间比某个阈值长的 ...

  6. STL容器 erase的使用陷井

    http://www.cppblog.com/beautykingdom/archive/2008/07/09/55760.aspx?opt=admin 在STL(标准模板库)中经常会碰到要删除容器中 ...

  7. STL容器迭代过程中删除元素技巧(转)

    1.连续内存序列容器(vector,string,deque) 序列容器的erase方法返回值是指向紧接在被删除元素之后的元素的有效迭代器,可以根据这个返回值来安全删除元素. vector<in ...

  8. 怎么删除STL容器的元素

    在STL容器有顺序容器和关联容器两种. 顺序容器删除元素的方法有两种: 1.c.erase(p) 从c中删除迭代器p指定的元素.p必须指向c中一个真实元素,不能等于c.end().返回一个指向p之后元 ...

  9. 删除STL容器中的元素

    有关stl容器删除元素的问题,错误的代码如下: std::vector<struct> mFriendList; ... std::vector<struct>::iterat ...

  10. STL——容器(Set & multiset)的默认构造 & 带参构造 & 对象的拷贝构造与赋值

    1. 默认构造 set<int> setInt;              //一个存放int的set容器. set<float> setFloat;          //一 ...

随机推荐

  1. MYSQL学习(三) --索引详解

    创建高性能索引 (一)索引简介 索引的定义 索引,在数据结构的查找那部分知识中有专门的定义.就是把关键字和它对应的记录关联起来的过程.索引由若干个索引项组成.每个索引项至少包含两部分内容.关键字和关键 ...

  2. JVM简单入门

    目录 初识JVM 双亲委派机制 沙箱安全机制 Native PC计数器 方法区 栈 堆 工具分析OOM GC算法 GC算法总结 JMM 初识JVM JVM的位置:jre中包含jvm. 双亲委派机制 双 ...

  3. 在 macOS 中使用 Podman

    原文链接:https://fuckcloudnative.io/posts/use-podman-in-macos/ Podman 是一个无守护程序与 Docker 命令兼容的下一代 Linux 容器 ...

  4. Stream流的这些操作,你得知道,对你工作有很大帮助

    Stream流 Stream(流)是一个来自数据源的元素队列并支持聚合操作: 元素是特定类型的对象,形成一个队列. Java中的Stream并不会存储元素,而 是按需计算. 数据源 流的来源. 可以是 ...

  5. FL Studio12如何进行图示编辑

    FL Studio在国内被大家 亲切的称为"水果"深受喜爱玩电音的音乐人的追捧,本章节采用图文结合的方式给大家讲解它的FL Studio12是如何进行图示编辑的. 单击图示按钮可以 ...

  6. 苹果电脑下载电影教程:如何用folx下载《小妇人》

    由西尔莎罗南.艾玛沃特森等知名影星重新演绎的<小妇人>又带动了新一轮的<小妇人>热潮.这部由露易莎创作的长篇小说,曾被多次拍摄,无论是小说本身,还是其影视资源,都能让观众回味无 ...

  7. guitar pro系列教程(二十五):Guitar Pro教程之组织小节

    上一章节我们讲述了关于Guitar Pro 7的主界面的相关功能的介绍,对于初学作曲,又是吉他的初学者,刚刚接触Guitar Pro时,很多的功能,符号,工具都市不熟悉的,这样在创作,使用的过程中就会 ...

  8. Java基础教程——使用Eclipse快速编写Java输入输出代码

    Eclipse安装 IDE:Integrated Development Environment,集成开发环境.好比是全自动洗衣机. 此处使用[eclipse-jee-4.6-neon-3-win32 ...

  9. python - os.sep用法

    python是跨平台的.在Windows上,文件的路径分隔符是'\',在Linux上是'/'.为了让代码在不同的平台上都能运行,那么路径应该写'\'还是'/'呢?使用os.sep的话,就不用考虑这个了 ...

  10. bypass disable_function

    windows 1.com组件绕过 <?php$command=$_POST['a'];$wsh = new COM('WScript.shell'); // 生成一个COM对象 Shell.A ...