STL——容器(Map & multimap)的简述与构造
1. map/multimap 的简介
map 是标准的关联式容器,一个 map 里存储的元素是一个键值对序列,叫做 (key,value) 键值对。它提供基于 key 快速检索数据的能力。
map 中 key 值是唯一的。集合中的元素按一定的顺序排列。元素插入过程是按排序规则插入,所以不能指定插入位置。
map 底层的具体实现是采用红黑树变体的平衡二叉树的数据结构。在插入操作、删除和检索操作上比 vector 快很多。
map 可以直接存取 key 所对应的 value,支持[]操作符,如 map[key]=value。
multimap 与 map的区别:map支持唯一键值,每个键只能出现一次;而 multimap 中相同键可以出现多次。multimap 不支持 [ ] 操作符。
一段简单的示例:
1 #include <iostream>
2 #include <map>
3
4 using namespace std;
5
6 int main()
7 {
8 map<int, string> mapStu;
9 multimap<int, string> multimapStu;
10
11 mapStu.insert(pair<int, string>(1, "mapStu 内容A"));
12 mapStu.insert(pair<int, string>(2, "mapStu 内容B"));
13 mapStu[3] = "mapStu 内容C"; //map 可以通过下标符进行赋值,multimap 不可以这样进行赋值
14
15 multimapStu.insert(pair<int, string>(1, "multimapStu 内容A")); //multimap 支持同 key 插入
16 multimapStu.insert(pair<int, string>(1, "multimapStu 内容B"));
17 //multimapStu[3] = "multimapStu 内容C"; //这样写是会报错的
18
19 for (map<int, string>::iterator it = mapStu.begin(); it != mapStu.end(); it++)
20 {
21 cout << "key: " << (*it).first << " value: " << (*it).second << endl;
22 }
23 cout << endl << "multimap 支持同 key 插入" << endl;
24 for (map<int, string>::iterator it = multimapStu.begin(); it != multimapStu.end(); it++)
25 {
26 cout << "key: " << (*it).first << " value: " << (*it).second << endl;
27 }
28
29 return 0;
30 }
打印结果:

这里还要注意一点,在 map 中,通过 insert 进行已有 kay 的写入,不会对已有 key 的 value 进行覆盖,但使用 [ ] 操作符写入已有 key 会覆盖对应的 value。
2. map/multimap 对象的默认构造
map/multimap 采用模板类实现,对象的默认构造形式:
map<T1,T2> mapTT;
multimap<T1,T2> multimapTT;
如:
map<int, char> mapA;
map<string,float> mapB;
其中T1,T2还可以用各种指针类型或自定义类型
3. map和multimap 对象的带参数构造
方式一:map(beg,end); //将[beg, end)区间中的元素拷贝给本身。
方式二:map(const map &mapObject); //拷贝构造函数。
===========================================================================================================================
STL——容器(Map & multimap)的简述与构造的更多相关文章
- STL——容器(Map & multimap)的拷贝构造与赋值
1. Map & multimap 的拷贝构造与赋值 map(const map &mp); //拷贝构造函数 map& operator=(con ...
- STL:map/multimap用法详解
map/multimap 使用map/multimap之前要加入头文件#include<map>,map和multimap将key/value当作元素,进行管理.它们可根据key的排序准则 ...
- STL之map&multimap使用简介
map 1.insert 第一种:用insert函数插入pair数据 #include <map> #include <string> #include <iostrea ...
- STL容器 -- Map
核心描述: map 就是从键(key) 到 值(value) 的一个映射.且键值不可重复,内部按照键值排序. 头文件: #include <map> 拓展: multimap 是一个多重映 ...
- STL容器Map
Map的常见函数 Map的实现机制 STL中的Map底层实现机制是RB树(红-黑树)
- 【STL】-Map/Multimap的用法
初始化: map<string,double> salaries; 算法: 1. 赋值.salaries[ "Pat" ] = 75000.00; 2. 无效的索引将自 ...
- STL - 容器 - Map(二)
把Map用作关联式数组 MapAdvanceTest.cpp #include <map> #include <string> #include <iostream> ...
- STL - 容器 - Map(一)
MapTest.cpp #include <map> #include <string> #include <iostream> #include <algo ...
- STL之Map和multimap容器
1.Map和multimap容器 1)map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对.它提供基于key的快速检索能力. 2)map中key值是唯一的.集合中的元素按一 ...
随机推荐
- 【javascript】掌握ES6-10,附xmind思维导图,每个知识点备注说明案例,请享用
前段时间一直想掌握ES6-10,陆陆续续花了1个月的时间,自学了ES6-10的新知识点,大部分都是非常实用的,花了2天时间整理思维导图 思维导图已上传博客园,请享用. ES6-10思维导图xmind ...
- C++ const的自我理解
C++学习笔记–const const 是 constant 的缩写,本意是不变的,不易改变的意思.在 C++ 中是用来修饰内置类型变量,自定义对象,成员函数,返回值,函数参数. C++ const ...
- 搭建zookeeper集群(伪集群)
jdk环境 上传zk压缩包 解压缩 复制三份 mkdir /usr/local/zk_cluster cp -r zookeeper-3.4.6 /usr/local/zk_cluster/zooke ...
- webpack、node、npm关系
webpack模块打包 webpack为了正常运行, 必须依赖node环境, node环境为了可以正常的执行很多代码,必须其中包含各种依赖的包 npm工具(node packages manager) ...
- 深度分析:面试阿里,字节99%会被问到Java类加载机制和类加载器
1. 类加载机制 所谓类加载机制就是JVM虚拟机把Class文件加载到内存,并对数据进行校验,转换解析和初始化,形成虚拟机可以直接使用的Jav类型,即Java.lang.Class. 2. 类加载的过 ...
- python 中 try...finally... 的优雅实现
1. 关于 try.. finally.. 假如上帝用 python 为每一个来到世界的生物编写程序,那么除去中间过程的种种复杂实现,最不可避免的就是要保证每个实例最后都要挂掉.代码可简写如下: tr ...
- Mac book系统的垃圾清理如何进行?
当我们看到电脑发出的内存不足的提示,这就意味着: 1.Mac系统的内存即将被占满 2.电脑将运行缓慢 3.开机速度变慢 很多人使用Mac book一年以后都会发现,它的运行开始逐渐变慢,爱电脑的人在将 ...
- 利用css3实现照片列表展开小demo
效果如下: 其实实现起来很简单,就是控制 宽 高的变化,然后给他加上transition 过度而已.觉得代码没什么难的地方,就不打注释了,如果哪里有不懂的话,可以直接评论呢. 直接上源码 html代码 ...
- 系统提供的dispatch方法
h1, h2, h3, h4, h5, h6, p, blockquote { margin: 0; padding: 0 } body { font-family: "Helvetica ...
- 完全图的最短Hamilton路径——状压dp
题意:给出一张含有n(n<20)个点的完全图,求从0号节点到第n-1号节点的最短Hamilton路径.Hamilton路径是指不重不漏地经过每一个点的路径. 算法进阶上的一道状压例题,复杂度为O ...