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. 41、shell编程基础

    bash的变量默认都是全局变量,脚本内都可以调用,无论在什么位置(函数体中也一样),即函数体外可以调用函数体内的变量: local一般用于局部变量声明,多在函数体内使用: 如果要变为局部变量,则要使用 ...

  2. ACM金牌选手整理的【LeetCode刷题顺序】

    算法和数据结构知识点图 首先,了解算法和数据结构有哪些知识点,在后面的学习中有 大局观,对学习和刷题十分有帮助. 下面是我花了一天时间花的算法和数据结构的知识结构,大家可以看看. 后面是为大家 精心挑 ...

  3. [心得]zookeeper

    1. 什么是zookeeper? 分布式协调服务 是一个典型的分布式数据一致性解决方案,分布式应用程序可以基于 ZooKeeper 实现诸如数据发布/订阅.负载均衡.命名服务.分布式协调/通知.集群管 ...

  4. mybatis 配置的log4j文件无效,不能正常显示日志信息

    正在学习mybatis,配置好后log4j.properties文件后,日志信息不能正常显示,没有效果. 查看了一下mybatis的相关文档,在日志一栏找到问题愿意 原因是我们的mybatis选了其他 ...

  5. TestComplete 最新安装教程

    在安装TestComplete之前阅读许可协议.通过安装TestComplete,您确认您同意许可的条款和条件. 查看"安装注意事项"部分,确保您的计算机满足硬件和软件要求. 安装 ...

  6. Java并发实战一:线程与线程安全

    从零开始创建一家公司 Java并发编程是Java的基础之一,为了能在实践中学习并发编程,我们跟着创建一家公司的旅途,一起来学习Java并发编程. 进程与线程 由于我们的目标是学习并发编程,所以我不会把 ...

  7. linux:mysql

    数据库介绍 mysql与php是黄金搭档(LAMP.LNMP) 常见的数据库 Oracle.Sql server.Access.Mariadb.Ds2等 安装 安装前确保计算机时间准确 源码包安装 优 ...

  8. netcore3.1 + vue (前后端分离) IIS 部署

    1.安装 aspnetcore-runtime-3.1.1-win-x64.exe 2.安装dotnet-hosting-3.1.1-win.exe 3.安装urlrewrite和applicatio ...

  9. ARM汇编指令-STM32单片机启动

    EQU 给数字常量取一个符号名,相当于c中的define. AREA  告诉汇编器汇编一个新的代码段. SPACE 分配内存空间. PRESERVE   当前文件堆栈按照8字节对齐. EXPORT 声 ...

  10. git配置多个ssh key

    随着工作的深入,我们通常都会有多个git账户.比如公司gitlab一个账户,github或gitee有一个账户.而平时我们又回通过 配置ssh公私钥认证的方式省去繁琐的登录远程仓库的操作,不同的git ...