Map & multimap 的删除

  • map.clear();           //删除所有元素
  • map.erase(pos);      //删除pos迭代器所指的元素,返回下一个元素的迭代器。
  • map.erase(beg,end);//删除区间[beg,end)的所有元素  ,返回下一个元素的迭代器。
  • map.erase(key);     //删除容器中key为key的对组,返回删除的对组个数

1. clear() 删除所有元素示例:

 1 #include <iostream>
2 #include <map>
3
4 using namespace std;
5
6 int main()
7 {
8 map<int, string> mapStu1;
9 mapStu1.insert(pair<int, string>(1, "内容A"));
10 mapStu1.insert(pair<int, string>(2, "内容B"));
11 mapStu1.insert(pair<int, string>(3, "内容C"));
12
13 if (!mapStu1.empty())
14 {
15 cout << "容器 mapStu1 中共有" << mapStu1.size() << "个元素" << endl;
16 }
17 else
18 {
19 cout << "容器 mapStu1 中共有" << mapStu1.size() << "个元素, " << "容器为空" << endl;
20 }
21
22 cout << "删除所有元素" << endl;
23 mapStu1.clear();
24 if (!mapStu1.empty())
25 {
26 cout << "容器 mapStu1 中共有" << mapStu1.size() << "个元素" << endl;
27 }
28 else
29 {
30 cout << "容器 mapStu1 中共有" << mapStu1.size() << "个元素, " << "容器为空" << endl;
31 }
32
33 return 0;
34 }

打印结果:

2. erase(pos);  //删除pos迭代器所指的元素示例:

 1 #include <iostream>
2 #include <map>
3
4 using namespace std;
5
6 int main()
7 {
8 map<int, string> mapStu1;
9
10 mapStu1.insert(pair<int, string>(1, "内容A"));
11 mapStu1.insert(pair<int, string>(2, "内容B"));
12 mapStu1.insert(pair<int, string>(3, "内容C"));
13 mapStu1.insert(pair<int, string>(4, "内容D"));
14
15 map<int, string>::iterator it1 = mapStu1.begin();
16 cout << "删除首元素前, 首元素为:" << it1->first << "首元素内容为: " << it1->second << endl;
17 cout << endl;
18 map<int, string>::iterator it2 = mapStu1.erase(mapStu1.begin());
19 cout << "删除首元素后, 新的首元素为:" << it2->first << "首元素内容为: " << it2->second << endl;
20
21 return 0;
22 }

打印结果:

3. erase(beg,end); //删除区间[beg,end)的所有元素示例

 1 #include <iostream>
2 #include <map>
3
4 using namespace std;
5
6 int main()
7 {
8 map<int, string> mapStu1;
9
10 mapStu1.insert(pair<int, string>(1, "内容A"));
11 mapStu1.insert(pair<int, string>(2, "内容B"));
12 mapStu1.insert(pair<int, string>(3, "内容C"));
13 mapStu1.insert(pair<int, string>(4, "内容D"));
14 mapStu1.insert(pair<int, string>(5, "内容E"));
15
16 cout << "遍历mapStu1: " << endl;
17 for (map<int, string>::iterator it = mapStu1.begin(); it != mapStu1.end(); it++)
18 {
19 cout << "容器 mapStu1 的第" << it->first << "个元素为: " << it->second << endl;
20 }
21
22 cout << endl << "删除除首元素与尾部元素之间的所有元素" << endl;
23
24 map<int, string>::iterator it = mapStu1.erase(++mapStu1.begin(), --mapStu1.end());
25 cout << endl << "删除完后返回的迭代器所指向的 key 为: " << it->first << "内容为: " << it->second << endl;
26
27 cout << endl << "删除后遍历mapStu1: " << endl;
28 for (map<int, string>::iterator it = mapStu1.begin(); it != mapStu1.end(); it++)
29 {
30 cout << "容器 mapStu1 的第" << it->first << "个元素为: " << it->second << endl;
31 }
32
33 return 0;
34 }

打印结果:

4. erase(key); //删除容器中key为key的对组示例

 1 #include <iostream>
2 #include <map>
3
4 using namespace std;
5
6 int main()
7 {
8 multimap<int, string> multimapStu1;
9
10 multimapStu1.insert(pair<int, string>(1, "内容A"));
11 multimapStu1.insert(pair<int, string>(1, "内容AA"));
12 multimapStu1.insert(pair<int, string>(1, "内容AAA"));
13 multimapStu1.insert(pair<int, string>(2, "内容B"));
14 multimapStu1.insert(pair<int, string>(3, "内容C"));
15
16 cout << "遍历mapStu1: " << endl;
17 for (map<int, string>::iterator it = multimapStu1.begin(); it != multimapStu1.end(); it++)
18 {
19 cout << "容器 mapStu1 key 为" << it->first << "的个元素为: " << it->second << endl;
20 }
21 cout << endl << "删除所有 key 为 1 的组" << endl;
22
23 cout << endl << "共删除了" << multimapStu1.erase(1) << "个 key 为1的组" << endl; //会返回删除的个数
24 cout << "遍历mapStu1: " << endl;
25 for (map<int, string>::iterator it = multimapStu1.begin(); it != multimapStu1.end(); it++)
26 {
27 cout << "容器 mapStu1 key 为" << it->first << "的个元素为: " << it->second << endl;
28 }
29
30 return 0;
31 }

打印结果:

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

STL——容器(Map & multimap)的删除的更多相关文章

  1. STL:map/multimap用法详解

    map/multimap 使用map/multimap之前要加入头文件#include<map>,map和multimap将key/value当作元素,进行管理.它们可根据key的排序准则 ...

  2. STL之map&multimap使用简介

    map 1.insert 第一种:用insert函数插入pair数据 #include <map> #include <string> #include <iostrea ...

  3. STL容器 -- Map

    核心描述: map 就是从键(key) 到 值(value) 的一个映射.且键值不可重复,内部按照键值排序. 头文件: #include <map> 拓展: multimap 是一个多重映 ...

  4. STL容器Map

    Map的常见函数 Map的实现机制 STL中的Map底层实现机制是RB树(红-黑树)

  5. 【STL】-Map/Multimap的用法

    初始化: map<string,double> salaries; 算法: 1. 赋值.salaries[ "Pat" ] = 75000.00; 2. 无效的索引将自 ...

  6. STL - 容器 - Map(二)

    把Map用作关联式数组 MapAdvanceTest.cpp #include <map> #include <string> #include <iostream> ...

  7. STL - 容器 - Map(一)

    MapTest.cpp #include <map> #include <string> #include <iostream> #include <algo ...

  8. iBinary C++STL模板库关联容器之map/multimap

    目录 一丶关联容器map/multimap 容器 二丶代码例子 1.map的三种插入数据的方法 3.map集合的遍历 4.验证map集合数据是否插入成功 5.map数据的查找 6.Map集合删除元素以 ...

  9. STL 笔记(二) 关联容器 map、set、multimap 和 multimap

    STL 关联容器简单介绍 关联容器即 key-value 键值对容器,依靠 key 来存储和读取元素. 在 STL 中,有四种关联容器,各自是: map 键值对 key-value 存储,key 不可 ...

随机推荐

  1. Git-stash(暂存)

    修改某文件后,不想commit,使用stash保存在本地的某分支内 # 暂存 git stash ## 可暂存新增文件 git stash -u ## 为此次暂存添加标识 git stash save ...

  2. centos 7.6 虚拟机开启网卡

    1.    2. > cd /etc/sysconfig/network-scripts 3. > vi ifcfg-enp0s3 上图标红区域,默认值是:no,改为yes:保存. 4. ...

  3. 建议收藏,从零开始创建一个Activiti工作流,手把手教你完成

    环境配置 项目环境: JDK1.8 tomcat7 maven3.5 开发工具: IDEA activiti7 创建项目 目标:创建一个maven项目,集成Activiti,并自动生成25张数据库表 ...

  4. Annotation注解初识

    注解本质上就是一个接口,该接口默认继承Annotation接口 元注解 元注解的作用就是描述其他注解.Java1.5定义了4个标准的meta-annotation类型,它们被用来提供对其它 annot ...

  5. 鸿蒙系统freeModbusTcp移植简介

    freeModebus是工业中常用的一种通信, 在鸿蒙系统来移植 细节查看代码中,博文只是一些参考以及注意点, 参考了 wifi连接: https://harmonyos.51cto.com/post ...

  6. Shell编程规范:Don't use ls | grep

    目录 一.背景 二.ShellCheck的规范 三.修改写法 1.ls | grep file 2.ls | grep regexp 3.ls | grep -v multi 四.最后 五.参考 一. ...

  7. HTTPS原理剖析

    一.HTTP隐患 客户端向服务器发送HTTP请求,服务器收到请求后返回响应给客户端: 抓包如图: 我们可以发现:HTTP报文明文传输(而TCP/IP是可能被窃听的网络):且客户端跟服务器之间没有任何身 ...

  8. C语言讲义——变量的输出

    变量输出·常规 头文件:stdio.h 函数: printf("%", ); 需要占位符%_,要输出几个变量就需要几个占位符. 类型 占位符 助记 int %d d表示十进制dec ...

  9. Pytest自动化测试 - 完美结合Allure

    简介 Allure Framework是一种灵活的.轻量级.多语言测试报告工具. 不仅可以以简洁的网络报告形式非常简洁地显示已测试的内容, 而且还允许参与开发过程的每个人从日常执行中提取最大程度的有用 ...

  10. Ajax原理与图解

    Ajax原理 Ajax 的全称是Asynchronous JavaScript and XML. Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后 ...