【c++入门(2)】关联容器map
一、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相关推荐
- 200922阶段一C++关联容器map
目录 一.学习的知识点 关联容器 map 二.上课没有听懂或者没有理解的地方 三.当天学习的收获 四.作业的思路.不会的地方 五.其他需要反馈的问题 一.学习的知识点 关联容器 通过保存在数据项中的索 ...
- C++|STL学习笔记-对STL中关联容器map的进一步认识
关联容器map key + value 的值 关联容器 = 有序容器(红黑树) + 无序容器(散列表) + hash_map 有序容器中: map的键值是不允许重复的 multimap的键值是允许重复 ...
- C++知识点30——使用C++标准库(关联容器map及其初始化,赋值,查找,添加,删除与迭代器失效)
一.关联容器简介 关于顺序容器和关联容器的区别已经在博客https://blog.csdn.net/Master_Cui/article/details/107427911中提过 C++标准库中的关联 ...
- 关联容器——map、set
map类型通常被称为关联数组,与正常数组类似,不同之处在于其下标不必是整数.我们通过一个关键字而不是位置来查找值(键值对). 与之相对,set就是关键字的简单集合.当只是想知道一个值是否存在时,set ...
- C++ 11 特性:关联容器map、set的使用
参考文献<C++ Primer> 一.关联容器概述 1.1 关联容器的概念 关联容器支持高效的查找与访问,主要的关联容器为map与set这两个.其中map主要提供的是键-值的操作,比如字典 ...
- 算法训练营 训练 硬木种类、双重队列、水果(关联容器map)
关联容器:map map的键和值可以是不同的类型,键是唯一的,每个键都对应一个值.map可被当做希哈表使用,它建立了从键(关键字)到值的映射.map是键和值的一一映射,使用时需要引入头文件#inclu ...
- 理解关联容器“map”的关键点
map有一个构造函数: map<k, v> m(b, e); <C++ Primer>解释为:"创建 map 类型的对象 m, 存储迭代器 b 和 e 标记的范围内所 ...
- 《Essential C++》笔记之关联容器map的使用总结
map被定义为一对(pair)数值,其中的key通常是个字符串,扮演索引的角色,另一个数值是value. 字典便是map的一个不错实例.如果要编写一个能对文章内每个字眼的出现次数加以分析的程序, ...
- C++知识点32——使用C++标准库(关联容器set和multiset的初始化,赋值,查找,添加,删除与迭代器失效)
关联容器map和multimap已经在博客https://blog.csdn.net/Master_Cui/article/details/108690877和https://blog.csdn.ne ...
最新文章
- python修改ppt的字体和颜色_使用python-pptx包批量修改ppt格式的实现
- Externalizing Session State for a Spring Boot Application Using Spring-Session
- Thymeleaf介绍
- 16道嵌入式C语言面试题(转载)
- 创新学习对象1-陕西省网络与系统安全重点实验室研究员的李光夏老师
- JAVA中如何确保N个线程可以访问N个资源,但同时又不导致死锁?
- LeetCode MySQL 1633. 各赛事的用户注册率
- ApacheHttpServer修改httpd.conf配置文件
- php mvc vue 调用js函数_js 匿名函数自调用
- 数据库中的范式 Normal Form(用最简单的语言描述!)
- QT学习-10/31/2012
- springboot学习笔记-3 整合redismongodb
- MySQL 大表优化方案(长文)
- php 5.5.12 服务器php.ini配置
- 三星s10刷android原生,【极光ROM】-【三星S10E/S10/S10+ G97XX-9820】-【V12.0 Android-Q-TD1】...
- 测试用例管理系统 TestRail测试用例
- C语言 判断上三角矩阵
- Delphi第三方组件--Delphi第三方控件大比拼
- 正则表达式lookahead and lookbehind zero-length assertions
- 模仿实现百度搜索黑洞动画效果
热门文章
- [cocos2d-x] -- Cocos2d-x简介
- 【scrapy爬虫】最新sogou搜狗搜索 机智操作绕过反爬验证码(搜狗微信公众号文章同理)
- pandas库--DataFrame常用操作
- xutil post 414. onError: errorCode: 414, msg: Request-URI Too Long
- 大数据分析与实践 使用Python以UCI心脏病数据集为例,进行数据简单分析
- java double 赋值语句_Java中float、double、long类型变量赋值添加f、d、L尾缀问题
- 微信红包限额提升方法
- 汤道生对话亚马逊CTO:安全不只是技术,要从战略视角系统构建
- Jlink下载u-boot
- 机动车年审经过(佛山南海)