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内部自己重载了=操作符,会自己分配内存.
随机推荐
- 网站性能优化的方法--Yahoo
如何能让用户更快的打开我们的网页? 1.尽可能减少HTTP请求数 2.使用CDN(内容分发网络) 3.添加Expire/Cache-Control头 4.启用Gzip压缩 5.将CSS放在页面最上面 ...
- Drools规则引擎-如果判断某个对象中的集合是否包含指定的值
规则引擎集合相关处理 在实际生产过程中,有很多关于集合的处理场景,比如一个Fact对象中包含有一个集合,而需要判断该集合是否包含某个值.而Drools规则引擎也提供了多种处理方式,比如通过from.c ...
- Linux基本操作及安装(部分)
1.分别用cat \tac\nl三个命令查看文件/etc/ssh/sshd_config文件中的内容, 并用自己的话总计出这三个文档操作命令的不同之处? [root@localhost ~]# c ...
- 同时启动多个tomcat,端口修改
所用Tomcat服务器都为zip 版,非安装版.以 tomcat8 为例: 安装第二个Tomcat完成后,打开 tomcat/conf/server.xml 文件,查找以下三处: 1. 修改http访 ...
- 【C/C++】随机数的生成
C/C++:rand()函数 rand()函数的头文件:#include<stdlib.h> 该函数产生的随机数随机性差,速度慢,周期小(0-32767) 用法如下所示: #include ...
- struts与springmvc有何区别
Struts2与SpringMVC有何区别? (1)SpringMVC的核心控制器是基于servlet技术,而Struts2是基于filter. (2)Struts2是类级别的拦截, 一个类对应一个r ...
- 工作中常见的五种技术leader
力不从心型 在工作中有种技术leader,总认为自己是最好的.在方案设计的时候,自己有一种方案,下属有一种方案.leader非要别人听他的.如果两种方案没有优劣之分,比较建议的做法是让真正实施的人按照 ...
- python --- 零碎
1.匿名输出: lambda x : print(x))(100) #冒号前输入量 ,冒号后是输出量结果:100 2.导入调用其他python文件: test1.py #第一个python文件 def ...
- Jenkins持续集成项目搭建——基于Python Selenium自动化测试
参考链接:https://www.liaoxuefeng.com/article/1083282007018592 第一步:去官网https://jenkins.io/下载最新的war包 第二步:安装 ...
- Dubbo的基本介绍及使用
一,前言 在面对新技术新事物的时候,我们首先应该了解这是一个什么东东,了解为什么使用这门技术,如果我们不使用又会有什么影响.比如,本篇博客介绍Dubbo的基本使用,此时我们应该先要明白我为什么要使 ...