map用来存储排序后的由键和值组成的项的集合。键必须唯一,不同的键可以对应同一个值,在map中键保持逻辑排序后的顺序(以键为标准)。

代码

#include<iostream>
#include<map>
#include<string>
using namespace std; inline void print_map(map<string, double> m)
{
for(map<string, double>::iterator it = m.begin(); it != m.end(); ++it) // it指向一个二元组
cout << it->first << ": " << it->second << endl; cout << endl;
/**
for(auto x : m)
cout << x.first << ": " << x.second << endl; cout << endl;
*/
} int main()
{
map<string, double> mymap; // 默认是小于比较器less<string> cout << "-----插入------" << endl;
mymap.insert(pair<string, double>("xxm", 1.1));
mymap.insert(make_pair("mqg", 2.2));
mymap.insert(map<string, double>::value_type("lpp", 3.3));
mymap["zhx"] = 4.4;
print_map(mymap); cout << "-----通过键获取元素值------" << endl;
// 直接索引
// 通过索引直接获取对应的值,不存在键sjx,则返回double无参构造函数赋值为0
cout << mymap["xxm"] << " " << mymap["sjx"] << endl;
// 由于刚才 mymap["sjx"]语句,现在mymap中多了一个键值对mymap["sjx"]=0
// for循环遍历
print_map(mymap); cout << "----- 判断是否存在某个键------" << endl;
map<string, double>::iterator it1 = mymap.find("xxm"); // 存在,返回对应的迭代器
if(it1 == mymap.end())
cout << "不存在该键" << endl;
else
cout << it1->second << endl;
map<string, double>::iterator it2 = mymap.find("xxxxm"); // 不存在,返回mymap.end()
if(it2 == mymap.end())
cout << "不存在该键" << endl;
else
cout << it2->second << endl;
cout << endl; cout << "-----删除------" << endl;
mymap.erase("xxm"); // 删除键为xxm的键值对
mymap.erase(++mymap.begin()) ; // 删除第二个元素
print_map(mymap);
mymap.erase(mymap.begin(), mymap.end()); // 删除[mymap.begin(), mymap.end())区间的元素
if(mymap.empty()) cout << "mymap已空" << endl;
mymap.clear(); // 直接将映射内容全部清空
}

运行结果

-----插入------
lpp: 3.3
mqg: 2.2
xxm: 1.1
zhx: 4.4 -----通过键获取元素值------
1.1 0
lpp: 3.3
mqg: 2.2
sjx: 0
xxm: 1.1
zhx: 4.4 ----- 判断是否存在某个键------
1.1
不存在该键 -----删除------
lpp: 3.3
sjx: 0
zhx: 4.4 mymap已空

[C++]-map 映射的更多相关文章

  1. ZOJ 3644 Kitty's Game dfs,记忆化搜索,map映射 难度:2

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4834 从点1出发,假设现在在i,点数为sta,则下一步的点数必然不能是sta的 ...

  2. POJ2503——Babelfish(map映射+string字符串)

    Babelfish DescriptionYou have just moved from Waterloo to a big city. The people here speak an incom ...

  3. map——映射(message.cpp)

    信息交换 (message.cpp) [题目描述] Byteland战火又起,农夫John派他的奶牛潜入敌国获取情报信息. Cow历尽千辛万苦终于将敌国的编码规则总结如下: 1 编码是由大写字母组成的 ...

  4. filter过滤器与map映射

    filter过滤器 >>> list(filter(None,[0,1,2,True,False])) [1, 2, True] filter的作用就是后面的数据按照前面的表达式运算 ...

  5. map映射

    采集于:https://blog.csdn.net/luanpeng825485697/article/details/78056312 映射map: var map = new Map(); //映 ...

  6. Java精选笔记_集合【Map(映射)接口】

    Map(映射)接口 简介 该集合存储键值对,一对一对的往里存,并且键是唯一的.要保证map集合中键的唯一性. 从Map集合中访问元素时,只要指定了Key,就能找到对应的Value. 关键字是以后用于检 ...

  7. UVA12096 - The SetStack Computer(set + map映射)

    UVA12096 - The SetStack Computer(set + map映射) 题目链接 题目大意:有五个动作: push : 把一个空集合{}放到栈顶. dup : 把栈顶的集合取出来, ...

  8. PHP转Go系列:map映射

    映射的定义 初识映射会很懵,因为在PHP中没有映射类型的定义.其实没那么复杂,任何复杂的类型在PHP中都可以用数组表示,映射也不例外. $array['name'] = '平也'; $array['s ...

  9. Reactor系列(五)map映射

    #java# #reactor# #flux# #map# #映射# 视频解视: https://www.bilibili.com/video/av79179444/ FluxMonoTestCase ...

  10. scala 数据结构(八 ):-map映射操作

    在Scala中可以通过map映射操作来解决: 将集合中的每一个元素通过指定功能(函数)映射(转换)成新的结果集合这里其实就是所谓的将函数作为参数传递给另外一个函数,这是函数式编程的特点 以HashSe ...

随机推荐

  1. 安装VMwareTools

    2.1.挂载VMwareTools镜像

  2. ps 快速替换背景颜色

    1.打开图片: 点击工具栏上的"选择"--色彩范围--按[delete]

  3. LeetCode解题记录(贪心算法)(一)

    1. 前言 目前得到一本不错的算法书籍,页数不多,挺符合我的需要,于是正好借这个机会来好好的系统的刷一下算法题,一来呢,是可以给部分同学提供解题思路,和一些自己的思考,二来呢,我也可以在需要复习的时候 ...

  4. MySQL参数配置

    参数名称 参数说明 缺省值 最低版本要求 user 数据库用户名(用于连接数据库) 所有版本 passWord 用户密码(用于连接数据库) 所有版本 useUnicode 是否使用Unicode字符集 ...

  5. XCTF crypto 不仅仅是Mors

    一. 题目暗示摩斯码,打开文件发现里面有反斜杠的.不管它直接拿来解密 二. 发现一句话是句英文,还有其他的加密方式,后面那串只有两种字符A和B,手抓饼A套餐,b套餐 培根加密,拿来解密后,得到flag

  6. css 层叠上下文和层叠顺序

    层叠上下文是css中的一个三维概念,拥有层叠上下文的元素在z轴上比普通元素要高,而且其内部的所有内容是自成体系的,其后代都是在它的层叠顺序中 哪些元素拥有层叠上下文 1.根元素,也就是html默认拥有 ...

  7. 教你 PXE高效批量网络装机

    PXE高效批量网络装机一.PXE概述① PXE (Preboot eXcution Environment)② PXE批量部署的优点③ 服务端④ 客户端二.部署PXE远程安装服务搭建PXE远程安装服务 ...

  8. etcd中watch源码解读

    etcd中watch的源码解析 前言 client端的代码 Watch newWatcherGrpcStream run newWatchClient serveSubstream server端的代 ...

  9. Spring总结之SpringMvc下

    五.拦截器 SpringMVC中的拦截器是通过HandlerInterceptor来实现的,定义一个Interceptor有两种方式 1.实现HandlerInterceptor接口或者继承实现了Ha ...

  10. Junit测试用例配置Log4j

    用Junit测试非常方便,但有时我们想要看日志来方便排除,使用spring+log4j时,用Junit测试看日志很多人都不太会,即如何将Junit与log4j进行整合. 我也是研究了半天,才终于找到了 ...