STL中的关联式容器——map(映射)

  map,即“映射”。map是关联容器的一种,具体实现采用了红黑树的平衡二叉树的数据结构。它提供一对一(其中第一个称为关键字key,每个关键字只能在map中出现一次,第二个称为该关键字的值value)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。由于是利用了红黑树实现,因此可以快速插入key-value记录和快速删除记录。
  并且对于迭代器来说,可以修改value,而不能修改key,而且它根据key修改value记录,因此增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。
  map是C++ STL的一个重要成员,使用它时需要包含头文件:

#include <map>; //包含了map和multimap两种容器的定义

一、map 的初始化

有以下方式,举例说明如下:

map<int,string> a;
map<int,string> b(a); //拷贝队列a给队列b

二、map 对象的重要操作

列举如下:

a.insert(); //插入元素
a.erase(); //删除一个元素
a.find(); //查找一个元素
a.clear(); //删除所有元素
a.empty(); //如果map为空则返回true
a.count(); //返回指定元素出现的次数
a.size(); //返回map中元素的个数
a.max_size(); //返回可以容纳的最大元素个数
a.swap(); //交换两个map

三、优先级的设定

可以有以下几种方式,列举如下:

struct cmp1
{bool operator ()(const int &a,const int &b){return a>b;//最大值优先}
};
struct cmp2
{bool operator ()(const int &a,const int &b){return a<b;//最小值优先}
};
struct node1
{int u;bool operator < (const node1 &a) const{return u>a.u;//最大值优先}
};
struct node2
{int u;bool operator < (const node2 &a) const{return u<a.u;//最小值优先}
};
map<int,string>q1;//采用默认优先级构造队列,最小值优先
map<int,string,cmp1>q2;//最大值优先
map<int,string,cmp2>q3;//最小值优先
map<int,string,greater<int> >q4;//最大值优先
//注意“>>”会被认为错误,因为这是右移运算符,所以这里用空格号隔开
map<int,string,less<int> >q5;//最小值优先
map<node1,string>q6;//最大值优先
map<node2,string>q7;//最小值优先

STL中的关联式容器——map(映射)相关推荐

  1. C++ STL : 模拟实现STL中的关联式容器map和set

    目录 关联式容器 键值对 底层红黑树的改造 仿函数 红黑树的迭代器 完整代码 set set的文档介绍 set的实现 map map的文档介绍 map的实现 operator[] 完整代码 multi ...

  2. C++ STL : 模拟实现STL中的关联式容器unordered_map/unordered_set

    目录 unordered_map/unordered_set unordered_map/unordered_set与map/set的区别 底层哈希桶的改造 仿函数 Key值的获取方法 hash(ke ...

  3. C++(STL):29 ---关联式容器map 迭代器

    无论是前面学习的序列式容器,还是关联式容器,要想实现遍历操作,就必须要用到该类型容器的迭代器.当然,map 容器也不例外. C++ STL 标准库为 map 容器配备的是双向迭代器(bidirecti ...

  4. C++(STL):28 ---关联式容器map用法

    作为关联式容器的一种,map 容器存储的都是 pair 对象,也就是用 pair 类模板创建的键值对.其中,各个键值对的键和值可以是任意数据类型,包括 C++ 基本数据类型(int.double 等) ...

  5. STL关联式容器—map的使用

    一.map简介: map是关联容器,它按照特定的次序(按照key来比较)存储由键值key和值value组合而成的元素. 在map中,键值key通常用于排序和惟一地标识元素,而值value中存储与此键值 ...

  6. 关联式容器(map,set,multimap,multiset)

    关联式概念 STL中的部分容器,比如:vector.list.deque.forward_list(C++11)等,这 些容器统称为序列式容器,因为其底层为线性序列的数据结构,里面存储的是元素本身. ...

  7. 关联式容器---map和set

    map和set 1 关联式容器 2 键值对 3 树型结构的关联式容器 3.1 set 3.1.1 set 的介绍 3.1.1 set 的使用 3.2 map 3.2.1 map的介绍 3.2.2 ma ...

  8. C++(STL):30 ---关联式容器map的operator[]和insert效率对比

    通过前面的学习我们知道,map 容器模板类中提供有 operator[ ] 和 insert() 这 2 个成员方法,而值得一提的是,这 2 个方法具有相同的功能,它们既可以实现向 map 容器中添加 ...

  9. C++(STL):31 ---关联式容器map源码剖析

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

  10. STL——关联式容器

    一.关联式容器 标准的STL关联式容器分为set(集合)/map(映射表)两大类,以及这两大类的衍生体multiset(多键集合)和 multimap(多键映射表).这些容器的底层机制均以RB-tre ...

最新文章

  1. Spring Boot 太重,Vert.x 真香!
  2. 使用EasyRecovery 恢复被误删除的数据
  3. 哈希表的详细介绍 -转载
  4. ue4 rpc php,UE4 RPC在C++中的使用简例
  5. iOS9 App Thinning(应用瘦身)功能介绍
  6. Android P 图形显示系统
  7. git放弃本地修改,强制覆盖本地文件
  8. npcap loopback adapter是什么意思_抖音限流是什么意思? 抖音为什么突然限流?
  9. Git 切换提交历史节点
  10. linux显卡内核修改,如何为新内核添加老内核的显卡模块(私有驱动)
  11. easyui validatebox设置默认值时 去掉校验
  12. PHP curl请求https
  13. 解决办法: error: passing ‘const VideoFrame’ as ‘this’ argument discards qualifiers [-fpermissive]
  14. import keras的错误module ‘tensorflow.compat.v2‘ has no attribute ‘__internal__‘
  15. Kubernetes SharedInformerFactory共享Informer机制源码深入剖析-Kubernetes商业环境实战
  16. Java学习路线总结(书籍、视频推荐篇)
  17. iostream类 - C++输入输出(一)
  18. 【Linux实验】用户和组群账户管理
  19. bokeh与tornado结合的三种方式
  20. ubuntu16 无法调节亮度问题

热门文章

  1. UDP通信的简单实现(程序)
  2. mqtt 变为乱码 接受16进制字节流_常见乱码问题分析和总结
  3. 在 Cloudera Data Flow 上运行你的第一个 Flink 例子
  4. 360深度实践:Flink 与 Storm 协议级对比
  5. ios 点击出现另外一套tabbar_iOS 点击UITabBar触发刷新
  6. R语言在图上标出点坐标_利用R语言的leaflet包根据GPS信息在地图上标点
  7. 查看谁连接oracle,oracle如何查看当前有哪些用户连接到数据库
  8. dbeaver查看执行计划_SAP学习基础篇(52):PP模块-物料需求计划
  9. python numpy diff_Python numpy.uint16方法代码示例
  10. jquery-1.10.2_d88366fd.js和jquery-3.1.0.min.js 在用touch事件时候, event.changedTouches[0]报错的问题。...