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)的简述与构造的更多相关文章

  1. STL——容器(Map & multimap)的拷贝构造与赋值

    1. Map & multimap 的拷贝构造与赋值 map(const map &mp);               //拷贝构造函数 map& operator=(con ...

  2. STL:map/multimap用法详解

    map/multimap 使用map/multimap之前要加入头文件#include<map>,map和multimap将key/value当作元素,进行管理.它们可根据key的排序准则 ...

  3. STL之map&multimap使用简介

    map 1.insert 第一种:用insert函数插入pair数据 #include <map> #include <string> #include <iostrea ...

  4. STL容器 -- Map

    核心描述: map 就是从键(key) 到 值(value) 的一个映射.且键值不可重复,内部按照键值排序. 头文件: #include <map> 拓展: multimap 是一个多重映 ...

  5. STL容器Map

    Map的常见函数 Map的实现机制 STL中的Map底层实现机制是RB树(红-黑树)

  6. 【STL】-Map/Multimap的用法

    初始化: map<string,double> salaries; 算法: 1. 赋值.salaries[ "Pat" ] = 75000.00; 2. 无效的索引将自 ...

  7. STL - 容器 - Map(二)

    把Map用作关联式数组 MapAdvanceTest.cpp #include <map> #include <string> #include <iostream> ...

  8. STL - 容器 - Map(一)

    MapTest.cpp #include <map> #include <string> #include <iostream> #include <algo ...

  9. STL之Map和multimap容器

    1.Map和multimap容器 1)map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对.它提供基于key的快速检索能力. 2)map中key值是唯一的.集合中的元素按一 ...

随机推荐

  1. CTF练习(1)这是一张单纯的图片?

    1.练习平台http://123.206.31.85/challenges 2.图片下载后放进WInhex 最后安利一个  CTF资源库|CTF工具包|CTF工具集合 网站,里面工具很全,很方便   ...

  2. bWAPP----iFrame Injection

    iFrame Injection 直接上代码 1 <div id="main"> 2 3 <h1>iFrame Injection</h1> 4 ...

  3. CorelDRAW“出血线”的精准预设与辅助线便捷操作

    CorelDRAW软件是一款常用的制图工具,非常适合用于印刷品输出,各种印刷图文制作都依赖于它.所以,我们设计者每次用CorelDRAW制图的一个关键就是要做好"标尺辅助线"设置, ...

  4. AWS CodePipeline部署Maven项目至EC2

    背景 AWS CodePipeline 是一种持续性的集成与交付服务,可以实现快速而可靠的应用程序和基础设施更新.根据您定义的发布流程模型,只要代码发生变更,CodePipeline 便会生成.测试和 ...

  5. 二分查找 leetcode704

    class Solution {    public int search(int[] nums, int target) {        int l=0;        int r=nums.le ...

  6. Calling unknown method: app\modules\mobile\controllers\CompanyController::redirect()

    $this->redirect(['default/error']); Yii::$app->end();上边的代码出现 Calling unknown method: app\modul ...

  7. ECS服务器快速迁移

    ECS服务器快速迁移 前提 一.停机 二.创建镜像 三.复制镜像 前提 服务器都在同一个区域,举例:华南1(深圳) 同一个账号 具体迁移步骤如下: 一.停机 先从阿里云ECS控制台,将要迁移的两台EC ...

  8. 网络拓扑实例之交换机基于接口地址池作为DHCP服务器(六)

    组网图形 DHCP服务器简介 通常用户希望网络中的每台终端能够动态获取IP地址.DNS服务器的IP地址.路由信息.网关信息等网络参数,不需要手动配置终端的IP地址等网络参数:另外,针对一些移动终端(手 ...

  9. Java蓝桥杯——排列组合

    排列组合介绍 排列,就是指从给定n个数的元素中取出指定m个数的元素,进行排序. 组合,则是指从给定n个数的元素中仅仅取出指定m个数的元素,不考虑排序. 全排列(permutation) 以数字为例,全 ...

  10. CSRF&SSRF-初探准备

    了解CSRF之前的必备知识 1.同源策略 同源策略-三个相同:协议.域名.端口 举例说明: 源URL为:http://www.example.com/dir/page.html 协议为:http 域名 ...