STL-map and multimap
定义
- map<int,int> a;
- map<int,string> a;
- map<double,int> a;
- ……
首先要知道的一些
- Map是STL的一个关联容器,它提供一对一的数据处理能力,map不允许重复元素。
- 其中第一个称为关键字key,每个关键字只能在map中出现一次,第二个称为该关键字的值value,元素的次序由它们的key决定,和value无关。
- Map 中的元素总是保持单调递增。
- begin() 返回的迭代 器指向map 中的最小key值;
- rbegin() 返回的迭代器指向 map 中的最大key值。
- end() 返回的迭代 器指向 Map 中的最后元素的后一个位置;
- rend() 返回指向Map中第一个元素的反向迭代器
赋值
- map<int,int> a;
- //方法一:用insert函数插入pair数据
- a.insert(make_pair(,));
- //方法二:数组覆盖
- a[]=;
- /*需要注意的是:
- 用insert函数插入数据,在数据的插入上涉及到map关键字的唯一性这个概念。即当map中有这个关键字时,insert操作无效的。
- 用数组方式它可以覆盖以前该关键字对应的值*/
遍历
要输出所有元素需要使用迭代器依次遍历
- map<int,int> a;
- map<int,int>:: iterator i;
- for(i=a.begin();i!=a.end();i++)
- printf("%d %d\n",i->first,i->second);
map的反序遍历参照set和vector
函数
- size(),empty(),clear() 不多加赘述
- count() 用来查找Map中某个某个键值出现的次数,这个函数在Map只可能出现0或1次。
- find(x) 返回x元素的迭代器,如果找不到x就返回 end()的迭代器。
- 若有多个key值对应的value为x 则会返回key值最小的那个迭代器
- lower_bound(x) 返回map中key大于等于x的最小元素的迭代器。
- upper_bound(x) 返回map中key大于x的最小元素的迭代器。如果找不到也会返回end()的迭代器。
- erase(x):
- 其中x可以是具体的数或迭代器。删除map中不存在的元素会被忽略。
- a.erase(a.begin(),a.end())效果和a.clear()相同
- //find参考程序
- a.insert(make_pair(,));
- a.insert(make_pair(,));
- map<int,int>:: iterator i;
multimap
与map的区别
- !它允许重复键。即一个关键词可以有很多不同的值。这些值按插入的时间顺序排列。
- 插入:在multimap中没有定义[]运算符,因此,multimap进行插入的时候,只能利用insert()函数进行插入。
- 查找:使用find(x)查找返回每种关键词的所有元素的第一个元素的迭代器。
指定关键字的遍历
- . equal_range(x)
- 返回一对iterator的pair,表示关键词x的位置的区间(左闭右开)。
- .可用lower_bound与upper_bound实现
- multimap<int,int> a;
- #define it multimap<int,int>:: iterator
- a.insert(make_pair(,));
- a.insert(make_pair(,));
- a.insert(make_pair(,));
- a.insert(make_pair(,));
- a.insert(make_pair(,));
- //equal_range()
- pair<it,it> r=a.equal_range();
- for(it i=r.first;i!=r.second;i++)
- cout<<i->first<<" "<<i->second<<endl;
- //lower_bound and upper_bound
- for(it i=a.lower_bound();i!=a.upper_bound();i++)
- cout<<i->first<<" "<<i->second<<endl;
STL-map and multimap的更多相关文章
- STL Map和multimap 容器
STL Map和multimap 容器 map/multimap的简介 map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对.它提供 基于key的快速检索能力. ...
- C++ STL——map和multimap
目录 一 map和multimap 注:原创不易,转载请务必注明原作者和出处,感谢支持! 一 map和multimap map相对于set的区别:map具有键值和实值,所有元素根据键值自动排序.pai ...
- [STL] map,multimap,unordered_map基本用法
map的特性是,所有元素都会根据元素的键值自动被排序.map的所有元素都是pair,同时拥有键值(key)和实值(value).pair的第一元素被视为键值,第二元素被视为实值.map不允许两个元素拥 ...
- STL(六)——map、multimap
STL--map.multimap 文章目录 STL--map.multimap 关联容器与map的介绍 map与set的异同 map与multimap的异同 map类对象的构造 map添加元素 ma ...
- STL的基本使用之关联容器:map和multiMap的基本使用
STL的基本使用之关联容器:map和multiMap的基本使用 简介 map 和 multimap 内部也都是使用红黑树来实现,他们存储的是键值对,并且会自动将元素的key进行排序.两者不同在于map ...
- 【C++ STL】Map和Multimap
1.结构 Map和multimap将key/value pair(键值/实值 队组)当作元素,进行管理.他们根据key的排序准则将元素排序.multimap允许重复元素,map不允许. 元素要求: k ...
- STL之Map和multimap容器
1.Map和multimap容器 1)map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对.它提供基于key的快速检索能力. 2)map中key值是唯一的.集合中的元素按一 ...
- C++ STL 学习笔记__(8)map和multimap容器
10.2.9 Map和multimap容器 map/multimap的简介 ² map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对.它提供基于key的快速检索能力. ² ...
- STL标准库-容器-map和multimap
技术在于交流.沟通,本文为博主原创文章转载请注明出处并保持作品的完整性 map与multimap为关联容器,结构如下 map底层实现依然是rb_tree 他的data可以改,但是key不能改,因此ma ...
- STL中 map 和 multimap
1. 所在头文件<map>. 命名空间std, 声明如下: namespace std{ template <class Key,class T, class Compare = l ...
随机推荐
- node path模块
一.在nodejs中path模块时使用频率很高的模块,其中不乏有很多API写得很模糊,但仔细琢磨下来,也不是很难理解. 1.获取文件所在路径 var path = require('path'); v ...
- 斑马条码打印机GK888T打印标签是间隔的 ,不是连续的
有间断的标签纸和连续的标签纸是两种不同的纸张类型, 打印机的标签感应器需要工作在不同的模式来跟踪感应它们. 打印机正确感应纸张才不会红灯闪烁,打印的内容才按文件设计打印到标签的对应位置上. 所以要在驱 ...
- ThreadLocal 定义,以及是否可能引起的内存泄露(threadlocalMap的Key是弱引用,用线程池有可能泄露)
ThreadLocal 也可以跟踪一个请求,从接收请求,处理请求,到返回请求,只要线程不销毁,就可以在线程的任何地方,调用这个参数,这是百度二面的题目,参考: Threadlocal 传递参数(百度二 ...
- 安装Zookeeper出现Unable to start AdminServer,existing abnormally问题解决方法
问题如下: 出现这个问题主要是由于8080端口占用,可在zoo.cfg中增加admin.serverPort=没有被占用的端口号解决问题.
- keydown和KeyPress事件有何不同
KEYPRESSWhen a windowed control receives a key-press message (WM_CHAR) from Windows, its message han ...
- python操作mysql实例
#coding=utf-8 import MySQLdb # 打开数据库连接 db = MySQLdb.connect(host='localhost',user='root',passwd='',d ...
- 【刷题】洛谷 P1501 [国家集训队]Tree II
题目描述 一棵n个点的树,每个点的初始权值为1.对于这棵树有q个操作,每个操作为以下四种操作之一: + u v c:将u到v的路径上的点的权值都加上自然数c: - u1 v1 u2 v2:将树中原有的 ...
- 【刷题】BZOJ 1926 [Sdoi2010]粟粟的书架
Description 幸福幼儿园 B29 班的粟粟是一个聪明机灵.乖巧可爱的小朋友,她的爱好是画画和读书,尤其喜欢 Thomas H. Cormen 的文章.粟粟家中有一个 R行C 列的巨型书架,书 ...
- Vue设置不同的环境发布程序
原文地址: http://www.cnblogs.com/JimmyBright/p/7307486.html 通常应用程序上线都会经过开发环境.测试环境.生产环境三个阶段,三个环境通常会对应有三个不 ...
- Luogu 2801 教主的魔法 | 分块模板题
Luogu 2801 教主的魔法 | 分块模板题 我犯的错误: 有一处l打成了1,还看不出来-- 缩小块大小De完bug后忘了把块大小改回去就提交--还以为自己一定能A了-- #include < ...