一、map简介

map是一个关键字-值(key - value)的集合,就是可以通过key而找到value的一种关联数组。我们称这样的数据结构为:从key到value的映射,把key映射成value。

头文件:#include < map >

二、map的定义和访问

map 定义:map < key类型 , value类型 > 容器名称 ;

map < string , string > m1 ;   //定义一个key和value都是string的空容器m1
map < string , int> m2 ; //定义一个key为string value为int的空容器m2,通常用于字符串的桶数组
map < int , int > m3 ; //定义一个key和value都是int的空容器m3

技巧:有的时候可以定义一个map < long long , long long > 来做一个大桶数组,这样就相当于定义了一个cnt[long long]的桶数组,用普通的数组是无法实现的。

map的访问方式:下标访问

map类似于数组可以下标访问,访问的下表和key必须是一种数据类型!
例:
修改:dic[key] = value ;
访问:dic[key] ;

三、迭代器

(1)定义方式:map < key类型 , value类型 > ::iterator 名称 ;
(2)相关函数
提醒⚠:迭代器不支持< > <= >= += -= + -等操作

map会按照key从小到大排序所以输出顺序可能和输入顺序不同。
注意:end()返回的是尾元素后一个位置的迭代器,左闭右开。
可以通过迭代器来判断map容器mp是否为空:
if (mp.begin () == mp.end ()) empty ;

迭代器遍历:
能像这样吗?
肯定是不能,因为迭代器不支持<,正确代码:

迭代器的修改方法:
查询操作:

四、例题

反片语[Ananagrams,UVa156]
题目描述字谜中,一组由相同的字母按照不同的顺序组成的不同的单词,比如:OPTS、SPOT、STOP、POTS、POST,这样的单词我们称之为“anagrams”,但是另外有一些词确不具有这样的属性,比如QUIZ,无论你怎么重排单词中的字母顺序,都不能得到另一个单词。这样的单词我们称之为"ananagrams"。编写一个程序,读入字典中的一些单词,然后找出所有的相对"ananagrams"(该单词不能通过重排字母,得到输入文件中的另外一个单词)。注意单个字母的词,事实上都是ananagrams,因为单个字母的词不能被重排。输入文件的单词总数不超过1000个。
输入格式输入文件包含多行,每行多个单词,每一行的总长度不超过80个字符。每个单词由最多20个大写或者小写字母组成,且不会跨行。单词和单词之间可能有一个或者多个空格,注意,在判断是否是"anagrams"时,不区分大小写,比如tIeD’和 ‘EdiT’是anagrams。当遇到单独的一行“#”时,表示输入结束。
输出格式输出包含多行,输出输入文件中的ananagrams,一行一个单词,输出顺序按照字典序排序(所有大写字母在所有小写字母前面),且输出时保留输入文件中这个单词的大小写。
输入输出样列
输入样例1:ladder came tape soon leader acme RIDE lone Dreis peatScAlE orb eye Rides dealer NotE derail LaCeS drIed
noel dire Disk mace Rob dries
#输出样例1:Disk
NotE
derail
drIed
eye
ladder
soon

【c++入门(2)】关联容器map相关推荐

  1. 200922阶段一C++关联容器map

    目录 一.学习的知识点 关联容器 map 二.上课没有听懂或者没有理解的地方 三.当天学习的收获 四.作业的思路.不会的地方 五.其他需要反馈的问题 一.学习的知识点 关联容器 通过保存在数据项中的索 ...

  2. C++|STL学习笔记-对STL中关联容器map的进一步认识

    关联容器map key + value 的值 关联容器 = 有序容器(红黑树) + 无序容器(散列表) + hash_map 有序容器中: map的键值是不允许重复的 multimap的键值是允许重复 ...

  3. C++知识点30——使用C++标准库(关联容器map及其初始化,赋值,查找,添加,删除与迭代器失效)

    一.关联容器简介 关于顺序容器和关联容器的区别已经在博客https://blog.csdn.net/Master_Cui/article/details/107427911中提过 C++标准库中的关联 ...

  4. 关联容器——map、set

    map类型通常被称为关联数组,与正常数组类似,不同之处在于其下标不必是整数.我们通过一个关键字而不是位置来查找值(键值对). 与之相对,set就是关键字的简单集合.当只是想知道一个值是否存在时,set ...

  5. C++ 11 特性:关联容器map、set的使用

    参考文献<C++ Primer> 一.关联容器概述 1.1 关联容器的概念 关联容器支持高效的查找与访问,主要的关联容器为map与set这两个.其中map主要提供的是键-值的操作,比如字典 ...

  6. 算法训练营 训练 硬木种类、双重队列、水果(关联容器map)

    关联容器:map map的键和值可以是不同的类型,键是唯一的,每个键都对应一个值.map可被当做希哈表使用,它建立了从键(关键字)到值的映射.map是键和值的一一映射,使用时需要引入头文件#inclu ...

  7. 理解关联容器“map”的关键点

    map有一个构造函数: map<k, v> m(b, e); <C++ Primer>解释为:"创建 map 类型的对象 m, 存储迭代器 b 和 e 标记的范围内所 ...

  8. 《Essential C++》笔记之关联容器map的使用总结

       map被定义为一对(pair)数值,其中的key通常是个字符串,扮演索引的角色,另一个数值是value. 字典便是map的一个不错实例.如果要编写一个能对文章内每个字眼的出现次数加以分析的程序, ...

  9. C++知识点32——使用C++标准库(关联容器set和multiset的初始化,赋值,查找,添加,删除与迭代器失效)

    关联容器map和multimap已经在博客https://blog.csdn.net/Master_Cui/article/details/108690877和https://blog.csdn.ne ...

最新文章

  1. python修改ppt的字体和颜色_使用python-pptx包批量修改ppt格式的实现
  2. Externalizing Session State for a Spring Boot Application Using Spring-Session
  3. Thymeleaf介绍
  4. 16道嵌入式C语言面试题(转载)
  5. 创新学习对象1-陕西省网络与系统安全重点实验室研究员的李光夏老师
  6. JAVA中如何确保N个线程可以访问N个资源,但同时又不导致死锁?
  7. LeetCode MySQL 1633. 各赛事的用户注册率
  8. ApacheHttpServer修改httpd.conf配置文件
  9. php mvc vue 调用js函数_js 匿名函数自调用
  10. 数据库中的范式 Normal Form(用最简单的语言描述!)
  11. QT学习-10/31/2012
  12. springboot学习笔记-3 整合redismongodb
  13. MySQL 大表优化方案(长文)
  14. php 5.5.12 服务器php.ini配置
  15. 三星s10刷android原生,【极光ROM】-【三星S10E/S10/S10+ G97XX-9820】-【V12.0 Android-Q-TD1】...
  16. 测试用例管理系统 TestRail测试用例
  17. C语言 判断上三角矩阵
  18. Delphi第三方组件--Delphi第三方控件大比拼
  19. 正则表达式lookahead and lookbehind zero-length assertions
  20. 模仿实现百度搜索黑洞动画效果

热门文章

  1. [cocos2d-x] -- Cocos2d-x简介
  2. 【scrapy爬虫】最新sogou搜狗搜索 机智操作绕过反爬验证码(搜狗微信公众号文章同理)
  3. pandas库--DataFrame常用操作
  4. xutil post 414. onError: errorCode: 414, msg: Request-URI Too Long
  5. 大数据分析与实践 使用Python以UCI心脏病数据集为例,进行数据简单分析
  6. java double 赋值语句_Java中float、double、long类型变量赋值添加f、d、L尾缀问题
  7. 微信红包限额提升方法
  8. 汤道生对话亚马逊CTO:安全不只是技术,要从战略视角系统构建
  9. Jlink下载u-boot
  10. 机动车年审经过(佛山南海)