stl中的map数据类型
1.1 STL map
1.1.1 背景
关联容器使用键(key)来存储访问读取元素,而顺序容器则通过元素在容器中的位置存储和访问元素。
常见的顺序容器有:vector、list、deque、stack、queue、priority_queue。
常见的关联容器:map、set、multimap、multiset
1.1.2 提前知识
标准库定义简单的数据对类型pair,有如下接口:
该接口在头文件 utility.h
pair提供的操作 |
|
pair <T1,T2> p1; |
创建一个空的pair对象,其两个元素的类型分别是T1,T2 |
pair <T1,T2>p1(v1,v2); |
创建一个pair对象,其第一个元素的值为v1,第二个元素的值是v2
|
make_pair(v1,v2); |
创建一个pair对象 |
p1<p2 |
如果p1.first<p2.first |
p1==p2 |
如果p1.first == p2.first && p1.second == p2.second 返回true |
p.first |
p的第一个元素 |
p.second |
p的第二个元素 |
map 对象的定义
map的构造函数 |
|
map<k,v> m; |
创建空的map对象 |
map<k,v> m(m2); |
创建m2的副本m |
map<k,v> m(b,e); |
创建map类型的对象m,存储迭代器b和e标记的所有元素的副本。(范围??) |
map对象的第一个元素的类是是有所限制的,必须支持比较函数,。
map类定义的类型
|
|
map<k,v>::key_type |
在map容器中作为索引的键的类型 |
map<k,v>::mapped_type |
在map对象中作为被索引值的数据类型 |
map<k,v>::value_type |
一个pair类型,由前两者组成的一个pair对象,它的first元素具有const map<k,v>::key_type 类型,而second元素则为map<k,v>::mapped_type 类型 |
map支持的操作
增加删除查询
m.insert(e)
m.count(k)
m.find(k)
m.erase(k)
stl中的map数据类型的更多相关文章
- STL 中的map 与 hash_map的理解
可以参考侯捷编著的<STL源码剖析> STL 中的map 与 hash_map的理解 1.STL的map底层是用红黑树存储的,查找时间复杂度是log(n)级别: 2.STL的hash_ma ...
- STL中的map和unordered_map
STL中的map和unordered_map map 头文件:#include 原理:std::map的内部实现了一颗红黑树,有对其键值进行排序的功能,所以map是一个有序的容器,map中的每一个元素 ...
- STL中的map和hash_map
以下全部copy于:http://blog.chinaunix.net/uid-26548237-id-3800125.html 在网上看到有关STL中hash_map的文章,以及一些其他关于STL ...
- STL中关于map和set的四个问题?
STL map和set的使用虽不复杂,但也有一些不易理解的地方,如: 为何map和set的插入删除效率比用其他序列容器高? 或许有得人能回答出来大概原因,但要彻底明白,还需要了解STL的底层数据结构. ...
- C++ STL中的map用红黑树实现,搜索效率是O(lgN),为什么不像python一样用散列表从而获得常数级搜索效率呢?
C++ STL中的标准规定: map, 有序 unordered_map,无序,这个就是用散列表实现 谈谈hashmap和map的区别,我们知道hashmap是平均O(1),map是平均O(lnN)的 ...
- STL中的map、unordered_map、hash_map
转自https://blog.csdn.net/liumou111/article/details/49252645 在之前使用STL时,经常混淆的几个数据结构,特别是做Leetcode的题目时,对于 ...
- STL中的map/multimap小结
(1)使用map/multimap之前必须包含头文件<map>:#include<map> 并且和所有的关联式容器一样,map/multimap通常以平衡二叉树来完成 (2)n ...
- stl中的map经验
如果想使用一个map临时变量装载参数map,不需要使用new创建一个对象. 声明一个变量,直接赋值就可以.map内部自己重载了=操作符,会自己分配内存.
- STL中的map
map 容器 提供 1 对 1 的关系 定义方式: map<string,int>mp; 写在前面的是关键字. 数据插入: 1.使用 insert 插入 pair 数据 mp.insert ...
随机推荐
- Hadoop on Mac with IntelliJ IDEA - 4 制作jar包
本文讲述使用IntelliJ IDEA打包Project的过程,即,打jar包. 环境:Mac OS X 10.9.5, IntelliJ IDEA 13.1.4, Hadoop 1.2.1 Hado ...
- UVa572 Oil Deposits DFS求连通块
技巧:遍历8个方向 ; dr <= ; dr++) ; dc <= ; dc++) || dc != ) dfs(r+dr, c+dc, id); 我的解法: #include< ...
- Arduino 4X3键盘 AD模拟分量实现
//读分量测试 ---------------- ; //模拟口0 ; // 取得键AD模拟分量 void setup() { //通信波特率 Serial.begin(); } void loop( ...
- MKMapView的内存释放问题
MKMapView的内存释放问题 by 伍雪颖 - (void)dealloc { self.mapView.showsUserLocation = NO; self.mapView.userTrac ...
- java中的正则操作总结
http://www.cnblogs.com/nerxious/archive/2013/01/03/2842910.html 正则表达式在处理字符串的效率上是相当高的 关于正则表达式的使用,更多的是 ...
- 在Zend Studio中为ThinkPHP添加代码自动提示功能
身边很多朋友都使用ThinkPHP或CodeIgniter等开发框架为自己的项目提高开发效率. 在得力于这些优秀框架良好的设计结构的同时,也头疼于代码的自动完成提示功能没有纯PHP网站那么完善了.经常 ...
- Allegro批量复制Via并保持net属性
使用Allegro时须要批量复制net属性是GND或是其他属性的Via: 批量选中Via后点击Copy或'Shift+F5' 然后完毕复制,如图: 复制完.我们可能发现,这些复制的Via的net属性不 ...
- Build类
在开发中 我们有时候会需要获取当前手机的系统版本来进行判断,或者需要获取一些当前手机的硬件信息. android.os.Build类中.包括了这样的一些信息.我们可以直接调用 而不需要添加任何的权限和 ...
- JS中URL编码参数(UrlEncode)
JS中URL编码参数(UrlEncode) 网上有很多文字作品写涉及在JS中呈现类似UrlEncode功能时都是自定义参数来呈现,其实JS中本身就有那样的参数.参数parameter由于用类似URL的 ...
- yeelink使用笔记
一.触发条件设置 下面是我在群113978926里获得的解释: 摩斯电码<pengdonglin137@qq.com> 13:15:26 触发规则有什么限制吗怎么我设置的条件有时候无效呢 ...