STL中的关联式容器——map(映射)
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(映射)相关推荐
- C++ STL : 模拟实现STL中的关联式容器map和set
目录 关联式容器 键值对 底层红黑树的改造 仿函数 红黑树的迭代器 完整代码 set set的文档介绍 set的实现 map map的文档介绍 map的实现 operator[] 完整代码 multi ...
- C++ STL : 模拟实现STL中的关联式容器unordered_map/unordered_set
目录 unordered_map/unordered_set unordered_map/unordered_set与map/set的区别 底层哈希桶的改造 仿函数 Key值的获取方法 hash(ke ...
- C++(STL):29 ---关联式容器map 迭代器
无论是前面学习的序列式容器,还是关联式容器,要想实现遍历操作,就必须要用到该类型容器的迭代器.当然,map 容器也不例外. C++ STL 标准库为 map 容器配备的是双向迭代器(bidirecti ...
- C++(STL):28 ---关联式容器map用法
作为关联式容器的一种,map 容器存储的都是 pair 对象,也就是用 pair 类模板创建的键值对.其中,各个键值对的键和值可以是任意数据类型,包括 C++ 基本数据类型(int.double 等) ...
- STL关联式容器—map的使用
一.map简介: map是关联容器,它按照特定的次序(按照key来比较)存储由键值key和值value组合而成的元素. 在map中,键值key通常用于排序和惟一地标识元素,而值value中存储与此键值 ...
- 关联式容器(map,set,multimap,multiset)
关联式概念 STL中的部分容器,比如:vector.list.deque.forward_list(C++11)等,这 些容器统称为序列式容器,因为其底层为线性序列的数据结构,里面存储的是元素本身. ...
- 关联式容器---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 ...
- C++(STL):30 ---关联式容器map的operator[]和insert效率对比
通过前面的学习我们知道,map 容器模板类中提供有 operator[ ] 和 insert() 这 2 个成员方法,而值得一提的是,这 2 个方法具有相同的功能,它们既可以实现向 map 容器中添加 ...
- C++(STL):31 ---关联式容器map源码剖析
map的特性 所有元素都会根据元素的键值自动被排序 map中的pair结构 map的所有元素类型都是pair,同时拥有实值(value)和键值(key) pair的第一个元素视为键值,第二个元素视为实 ...
- STL——关联式容器
一.关联式容器 标准的STL关联式容器分为set(集合)/map(映射表)两大类,以及这两大类的衍生体multiset(多键集合)和 multimap(多键映射表).这些容器的底层机制均以RB-tre ...
最新文章
- Spring Boot 太重,Vert.x 真香!
- 使用EasyRecovery 恢复被误删除的数据
- 哈希表的详细介绍 -转载
- ue4 rpc php,UE4 RPC在C++中的使用简例
- iOS9 App Thinning(应用瘦身)功能介绍
- Android P 图形显示系统
- git放弃本地修改,强制覆盖本地文件
- npcap loopback adapter是什么意思_抖音限流是什么意思? 抖音为什么突然限流?
- Git 切换提交历史节点
- linux显卡内核修改,如何为新内核添加老内核的显卡模块(私有驱动)
- easyui validatebox设置默认值时 去掉校验
- PHP curl请求https
- 解决办法: error: passing ‘const VideoFrame’ as ‘this’ argument discards qualifiers [-fpermissive]
- import keras的错误module ‘tensorflow.compat.v2‘ has no attribute ‘__internal__‘
- Kubernetes SharedInformerFactory共享Informer机制源码深入剖析-Kubernetes商业环境实战
- Java学习路线总结(书籍、视频推荐篇)
- iostream类 - C++输入输出(一)
- 【Linux实验】用户和组群账户管理
- bokeh与tornado结合的三种方式
- ubuntu16 无法调节亮度问题
热门文章
- UDP通信的简单实现(程序)
- mqtt 变为乱码 接受16进制字节流_常见乱码问题分析和总结
- 在 Cloudera Data Flow 上运行你的第一个 Flink 例子
- 360深度实践:Flink 与 Storm 协议级对比
- ios 点击出现另外一套tabbar_iOS 点击UITabBar触发刷新
- R语言在图上标出点坐标_利用R语言的leaflet包根据GPS信息在地图上标点
- 查看谁连接oracle,oracle如何查看当前有哪些用户连接到数据库
- dbeaver查看执行计划_SAP学习基础篇(52):PP模块-物料需求计划
- python numpy diff_Python numpy.uint16方法代码示例
- jquery-1.10.2_d88366fd.js和jquery-3.1.0.min.js 在用touch事件时候, event.changedTouches[0]报错的问题。...