定义
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的更多相关文章

  1. STL Map和multimap 容器

    STL Map和multimap 容器 map/multimap的简介 map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对.它提供 基于key的快速检索能力.       ...

  2. C++ STL——map和multimap

    目录 一 map和multimap 注:原创不易,转载请务必注明原作者和出处,感谢支持! 一 map和multimap map相对于set的区别:map具有键值和实值,所有元素根据键值自动排序.pai ...

  3. [STL] map,multimap,unordered_map基本用法

    map的特性是,所有元素都会根据元素的键值自动被排序.map的所有元素都是pair,同时拥有键值(key)和实值(value).pair的第一元素被视为键值,第二元素被视为实值.map不允许两个元素拥 ...

  4. STL(六)——map、multimap

    STL--map.multimap 文章目录 STL--map.multimap 关联容器与map的介绍 map与set的异同 map与multimap的异同 map类对象的构造 map添加元素 ma ...

  5. STL的基本使用之关联容器:map和multiMap的基本使用

    STL的基本使用之关联容器:map和multiMap的基本使用 简介 map 和 multimap 内部也都是使用红黑树来实现,他们存储的是键值对,并且会自动将元素的key进行排序.两者不同在于map ...

  6. 【C++ STL】Map和Multimap

    1.结构 Map和multimap将key/value pair(键值/实值 队组)当作元素,进行管理.他们根据key的排序准则将元素排序.multimap允许重复元素,map不允许. 元素要求: k ...

  7. STL之Map和multimap容器

    1.Map和multimap容器 1)map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对.它提供基于key的快速检索能力. 2)map中key值是唯一的.集合中的元素按一 ...

  8. C++ STL 学习笔记__(8)map和multimap容器

    10.2.9 Map和multimap容器 map/multimap的简介 ²  map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对.它提供基于key的快速检索能力. ² ...

  9. STL标准库-容器-map和multimap

    技术在于交流.沟通,本文为博主原创文章转载请注明出处并保持作品的完整性 map与multimap为关联容器,结构如下 map底层实现依然是rb_tree 他的data可以改,但是key不能改,因此ma ...

  10. STL中 map 和 multimap

    1. 所在头文件<map>. 命名空间std, 声明如下: namespace std{ template <class Key,class T, class Compare = l ...

随机推荐

  1. Qt Lighthouse学习(二),就是QPA(Qt Platform Abstraction) 项目的名字

    上一次关注Qt Lighthouse是在6月初,可是现在都8月底了.时间真快... Lighthouse 是 QPA(Qt Platform Abstraction) 项目的名字,它使得将Qt移植到新 ...

  2. Mysql分库分表方案,如何分,怎样分?

    https://www.cnblogs.com/phpper/p/6937896.html 为什么要分表和分区? 日常开发中我们经常会遇到大表的情况,所谓的大表是指存储了百万级乃至千万级条记录的表.这 ...

  3. ACM数论之旅11---浅谈指数与对数(长篇)(今天休息,不学太难的数论> 3<)

    c/c++语言中,关于指数,对数的函数我也就知道那么多 exp(),pow(),sqrt(),log(),log10(), exp(x)就是计算e的x次方,sqrt(x)就是对x开根号 pow()函数 ...

  4. java static{}块

    java中static{}块只有在类加载是才会被调用. 这说明:static只有可能被调用一次. 原因:首先理解什么是类加载,区分类加载和申明对象的区别. public class StaticTes ...

  5. MachineLearning Exercise 7 : K-means Clustering and Principle Component Analysis

    findClosestCentroids.m m = size(X,); :m [value index] = min(sum((repmat(X(i,:),K,)-centroids).^,)); ...

  6. 少年,想学带修改主席树吗 | BZOJ1901 带修改区间第k小

    少年,想学带修改主席树吗 | BZOJ1901 带修改区间第k小 有一道题(BZOJ 1901)是这样的:n个数,m个询问,询问有两种:修改某个数/询问区间第k小. 不带修改的区间第k小用主席树很好写 ...

  7. js中相等、大小 不同类型之间是如何进行对比的。

    上个小问题 [] > [] false [] < [] false [] == [] false // why? 再上个加强版 '6xxx' < '5xx' false '6xxx' ...

  8. 解题:POI 2008 Station

    题面 水水的换根裸题,不过以前还真没做过换根的题 换根的思想就是在DFS中利用树的信息更新出当前点为根时的信息,具体来说一般是考虑子树外和子树内两部分 每个点的答案$ans$就是$ans[fa]+n- ...

  9. [USACO18OPEN]Out of Sorts P 冒泡排序理解之二

    题目描述 Bessie把快速排序和冒泡排序混在了一起 给一个伪快排的代码: 冒泡: bubble_sort_pass (A) { to length(A)- ], swap A[i] and A[i+ ...

  10. 音视频处理之FFmpeg+SDL+MFC视频播放器20180411

    一.FFmpeg+SDL+MFC视频播放器 1.MFC知识 1).创建MFC工程的方法 打开VC++ 文件->新建->项目->MFC应用程序 应用程序类型->基于对话框 取消勾 ...