map的嵌套使用方法

vector可以理解为一种映射关系,给定指定的int值,都会返回与其对应的特定类型的值。

类比vector,map也可以理解一种映射关系,只不过比起vector更加灵活,给定值不再局限于int型,可以任意指定。

因此,从这个角度来理解map,对于算法题的使用可以十分灵活。对应的高维的map(嵌套map)也比较容易理解了。

定义一个嵌套的map;

map<int,map<int,int> >m1;
map<string,map<string,int> >m2;

此map的key值为int型,而value值则为map对象。

赋值操作:

m1[1][2] = 5;
m2["s1"]["t1"] = 7;
m2["s1"]["t5"] = 9;
m2["s3"]["t2"] = 5;
m2["s5"]["t7"] = 44;

遍历操作:

for(map<string,map<string,int> >::iterator it1 = m2.begin();it1!=m2.end();it1++)
{cout<<it1->first<<endl;     for(map<string,int>::iterator it2 = it1->second.begin();it2 != it1->second.end();it2++)cout<<it2->first<<" "<<it2->second<<endl;
}

输出结果:

在遍历的过程中,要注意几个点

  1. 第一行,两个右箭头中间要留有空格,不然会被当作是流操作而报错。
  2. it1是迭代器,简单理解可以当作指针,因此对其内部的值的访问只能用**"->“而不能用”."。而取到的value值即it1->second是一个map对象,因此对其操作只能用".“而不能用”->"**。故访问内部map的迭代器须写成:
map<string,int>::iterator it2 = it1->second.begin()

类似的,find()操作如下:

map<string,map<string,int> >::iterator ii;
ii = m2.find("s1");
if(ii!=m2.end())
{cout<<ii->first<<endl;map<string,int>::iterator ii2;ii2 = ii->second.find("t5");if(ii2!=ii->second.end())cout<<ii2->first<<" "<<ii2->second<<endl;
}

其中,用到了两次find操作,find函数的返回值是一个迭代器,若查找失败,将返回end(),因此可以适当的进行find()操作。

map的嵌套使用方法相关推荐

  1. java中map嵌套map_java中遍历MAP,嵌套map的几种方法

    java中遍历MAP的几种方法 Map map=new HashMap(); map.put("username", "qq"); map.put(" ...

  2. Java8 Map中新增的方法使用总结

    前言 得益于 Java 8 的 default 方法特性,Java 8 对 Map 增加了不少实用的默认方法,像 getOrDefault, forEach, replace, replaceAll, ...

  3. HashSet 和 TreeSet 及 Map 集合的简单方法,含程序。

    HashSet 是一个什么样的容器呢? 在给HashSet容器对象添加元素时,利用散列函数.是无序的,不能添加相同元素的. package Set;import java.util.HashSet; ...

  4. java中遍历map的几种方法介绍

          喜欢用Java写程序的朋友都知道,我们常用的一种数据结构map中存储的是键值对,我们一般存储的方式是: map.put(key, value); 而提取相应键的值用的方法是: map.ge ...

  5. 【Groovy】map 集合 ( map 集合遍历 | 使用 map 集合的 find 方法遍历 map 集合 | 代码示例 )

    文章目录 一.使用 map 集合的 find 方法遍历 map 集合 二.代码示例 一.使用 map 集合的 find 方法遍历 map 集合 使用 map 集合的 find 方法遍历 map 集合 ...

  6. 【Groovy】map 集合 ( map 集合遍历 | 使用 map 集合的 each 方法遍历 map 集合 | 代码示例 )

    文章目录 一.使用 map 集合的 each 方法遍历 map 集合 二.代码示例 一.使用 map 集合的 each 方法遍历 map 集合 遍历 map 集合 , 可以调用 map 集合的 eac ...

  7. ML:分类预测问题中评价指标(ER/混淆矩阵P-R-F1/ROC-AUC/RP/mAP)简介、使用方法、代码实现、案例应用之详细攻略

    ML:分类预测问题中评价指标(ER/混淆矩阵P-R-F1/ROC-AUC/RP/mAP)简介.使用方法.代码实现.案例应用之详细攻略 目录 分类预测的简介 分类预测问题中评价指标(ER/ROC-AUC ...

  8. java map常用类及其方法_Day50.Map类常用的方法 -Java常用类、集合#、IO

    Day50.Map类常用的方法 -Java常用类.集合#.IO Day50.Map类常用的方法 -Java常用类.集合#.IO Map类常用的方法 . 总结: 常用方法 添加: put(Object ...

  9. 谈谈java中遍历Map的几种方法

    java中的map遍历有多种方法,从最早的Iterator,到java5支持的foreach,再到java8 Lambda,让我们一起来看下具体的用法以及各自的优缺点 先初始化一个map public ...

最新文章

  1. 在线即时通讯工具的网页即时聊天的html代码
  2. yan-round-sysuser的pom.xml文件
  3. 数据结构行编辑成簇 c语言,索引的数据结构及底层存储
  4. 华硕 RT-AC54U路由器固件功能说明
  5. 前端学习(1318):同步api和异步api
  6. oracle 判断是否位汉字,js判断字符是否是汉字的两种方法小结
  7. git.exe init#timeout = 10错误:克隆远程repo'origin'时出错hudson.plugins.git
  8. 星光计划计算机,计算机网络技术专业星光计划选拔赛圆满举行
  9. Codeforces Round #102 (Div. 1) D Help Shrek and Donkey 2
  10. listary提升开发效率
  11. 魔兽同服务器物品,《魔兽世界》怀旧服:这是给你的转服物资必备清单
  12. python 关于sys.argv[1]语句报错IndexError: list index out of range的解决
  13. CVTE(视源股份)前端实习生面经
  14. 使用Python编写打字训练小程序升级版
  15. 在这里,看到未来——2013微软技术节印象
  16. JS将字符串转数组、转数字、转对象;将数组转字符串、转对象;将对象转数组、转字符串
  17. mysql概念模型中的3种基本联系_在概念模型中,通常用实体联系图表示数据的结构,其 3 个要的元素是( )、( )和( )。_学小易找答案...
  18. 关于zigbee的一些术语
  19. MapGIS产品锦囊——获取数据节点坐标信息三步“走”司马云司马云
  20. ios 连续点击button_iOS小技巧:用runtime 解决UIButton 重复点击问题

热门文章

  1. 4核8g mysql 配置_Mysql配置文件 4c8g优化
  2. 肥大向心力衰竭压力超负荷法致充血性心力衰竭动物模型
  3. 音视频学习之-YUV裸数据
  4. 数的变幻(魔术师的猜牌术(2))
  5. 基础教程|如何在数分钟时间内渲染超清精美视频?
  6. Windows平台OpenGL渲染视频
  7. 中科蓝汛------DUT模式的使用与五击检测
  8. php服务器搭建iis,PHP+IIS 服务器环境的搭建
  9. (病毒安全)电脑装多款杀毒软件可以吗?
  10. 岭南师范学院专插本计算机,2019年岭南师范学院专插本招生专业