STL中的map和multimap小结
(1)使用map/multimap之前必须包含头文件<map>:#include<map> 并且和所有的关联式容器一样,map/multimap通常以平衡二叉树来完成 (2)namespace std{ template <class key, class T, class Compare = less<key>, class Allocator = allocator<pair<const key, T> > > class map; template <class key, class T, class Compare = less<key>, class Allocator = allocator<pair<const key, T> > > class multimap; } 第一个template参数被当作元素的key,第二个当作元素的value。key/value必须具备assignable和copyable性质,对排序而言key必须是comparable。第三个参数为排序准则,和map/multimap一样这个排序准则必须是strict weak ordering的,元素的次序由他们的key决定,和value无关,map/multimap根据元素的key自动对元素进行排序。 (3)map/multimap的操作函数: map c 产生一个空map/multimap map c(op) 以op为排序准则产生一个空map/multimap map c1(c2) 产生某一个map/multimap的副本 map c(beg, end) 以区间[beg, end)内的元素产生一个map/multimap map c(beg, end, op) 以op为排序准则,以区间[beg, end)内的元素产生一个map/multimap c.~map() 销毁所有元素,释放内存 其中map可为下列形式:map<Key, Elem>、map<Key, Elem, op>、multimap<Key, Elem>、multimap<Key, Elem, op> c.size() 返回当前的元素数量 c.empty() 判断c是否为空 c.max_size() 返回可容纳的元素最大数值 c1 compare c2 compare可为==,!=,<,>,<=和>= c.count(elem) 返回“键值等于key”的元素个数 c.find(elem) 返回“键值等于key”的第一个元素的迭代器,如果找不到就返回end() c.lower_bound(key) 返回“键值为key”之元素的第一个可安插位置,也就是“键值>=key”的第一个元素位置 c.upper_bound(key) 返回“键值为key”之元素的最后一个可安插位置,也就是“键值>key”的第一个元素位置 c.equal_range(key) 返回“键值为key”之元素的第一个和最后一个可安插位置,也就是“键值==key”的元素区间 lower_bound()、upper_bound()和equal_range()行为与set相应的函数十分相似,唯一不同的是:元素是一个key/value pair。 c1 = c2 将c2全部元素赋值给c1 c1.swap(c2) 将c1和c2元素互换 c.begin() 返回一个双向存取迭代器(将key视为常数),指向第一个元素 c.end() 返回一个双向存取迭代器(将key视为常数),指向最后元素的下一个位置 c.rbegin() 返回一个逆向迭代器,指向逆向迭代的第一个元素 c.rend() 返回一个逆向迭代器,指向逆向迭代的最后元素的下一个位置 这里的元素是一个key/value pair(pair<const key, T>)。 c.insert(elem) 插入一个elem副本并返回新元素的位置 c.insert(it, elem) 安插elem副本返回新元素的位置(it是一个提示指出安插操作的搜寻起点) c.insert(beg, end) 插入区间[beg, end)内的所有元素副本,无返回值 c.erase(elem) 移除“value与elem相等”的所有元素,返回被移除元素的个数 c.erase(it) 移除it位置上的元素,无返回 c.erase(beg, end) 移除[beg, end)区间内的所有元素,无返回 c.clear() 将容器清空 STL中的map和multimap小结的更多相关文章
- 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和set的四个问题?
STL map和set的使用虽不复杂,但也有一些不易理解的地方,如: 为何map和set的插入删除效率比用其他序列容器高? 或许有得人能回答出来大概原因,但要彻底明白,还需要了解STL的底层数据结构. ...
- STL中的map和hash_map
以下全部copy于:http://blog.chinaunix.net/uid-26548237-id-3800125.html 在网上看到有关STL中hash_map的文章,以及一些其他关于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数据类型
1.1 STL map 1.1.1 背景 关联容器使用键(key)来存储访问读取元素,而顺序容器则通过元素在容器中的位置存储和访问元素. 常见的顺序容器有:vector.list.deque.stac ...
- stl中的map经验
如果想使用一个map临时变量装载参数map,不需要使用new创建一个对象. 声明一个变量,直接赋值就可以.map内部自己重载了=操作符,会自己分配内存.
随机推荐
- 详解 Diff 算法以及循环要加 key 值问题
上一篇文章我简述了什么是 Virtual DOM,这一章我会详细讲 Diff 算法以及为什么在 React 和 Vue 中循环都需要 key 值. 什么是 DOM Diff 算法 Web 界面其实就是 ...
- 深入理解JVM-java字节码文件结构剖析(1)
public class MyTest1 { private int a = 1; public int getA() { return a; } public void setA(int a) { ...
- Okhttp3 网络请求框架与 Gson
Maven环境 : <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>o ...
- 使用RedisMQ 做一次分布式改造
引言 熟悉TPL Dataflow博文的朋友可能记得这是个单体程序,使用TPL Dataflow 处理工作流任务, 在使用Docker部署的过程中, 有一个问题一直无法回避: 在单体程序部署的瞬间会有 ...
- jQuery插件之路(三)——文件上传(支持拖拽上传)
好了,这次咱一改往日的作风,就不多说废话了,哈哈.先贴上源代码地址,点击获取.然后直接进入主题啦,当然,如果你觉得我有哪里写的不对或者欠妥的地方,欢迎留言指出.在附上一些代码之前,我们还是先来了解下, ...
- zookeeper 集群配置
安装前要先确保配置好 jdk,这里不在讲述 一. 将zookeeper 安装包下载到你想要的目录 下载地址:http://mirrors.hust.edu.cn/apache/zookeeper/ m ...
- Spring 常犯的十大错误,答应我 打死都不要犯好吗?
1. 错误一:太过关注底层 我们正在解决这个常见错误,是因为 “非我所创” 综合症在软件开发领域很是常见.症状包括经常重写一些常见的代码,很多开发人员都有这种症状. 虽然理解特定库的内部结构及其实现, ...
- SAP Special Fields in FAGLL03 transaction
https://wiki.scn.sap.com/wiki/display/ERPFI/Special+Fields+in+FAGLL03+transaction https://wiki.scn.s ...
- Spring 2017 Assignments1
一.作业要求 原版:http://cs231n.github.io/assignments2017/assignment1/ 翻译:http://www.mooc.ai/course/268/lear ...
- 纯前端下载pdf链接文件,而不是打开预览的解决方案
纯前端下载pdf链接文件,而不是打开预览的解决方案 一,介绍与需求 1.1,介绍 XMLHttpRequest 用于在后台与服务器交换数据.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行 ...