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值是唯一的.集合中的元素按一 ...
随机推荐
- Docker学习—Swarm
前言: 前一篇<Docker学习-Machine>中对Machine 进行了学习,本篇继续学习Swarm,那么Swarm是什么呢,有什么用呢?接下来一步步了解. 一.什么是Docker-S ...
- cookie和session的关系和区别
1.为什么会用到cookie和session 由于http请求是一种无状态的请求,一旦数据交换完毕便会关闭请求,再次交换数据则要再次发起请求,所以服务端无法通过连接追踪会话,确定用户身份,而cooki ...
- Stream流的这些操作,你得知道,对你工作有很大帮助
Stream流 Stream(流)是一个来自数据源的元素队列并支持聚合操作: 元素是特定类型的对象,形成一个队列. Java中的Stream并不会存储元素,而 是按需计算. 数据源 流的来源. 可以是 ...
- 面试阿里,腾讯90%会被问到的zookeeper,把这篇文章看完就够了。
Zookeeper概述 zookeeper高容错数据一致性协议(CP)的分布式小文件系统,提供类似于文件系统的目录方式的数据存储. 全局数据一致性:每个server保存一份相同的数据副本,client ...
- Pinpoint 设置微信或者钉钉预警
本文基于 Pinpoint 2.1.0 版本 本文大部分内容来自:侠梦的开发笔记 ,但是原文的版本和我的不一致,放在2.1.0是跑不起来的,但是大概逻辑和思路基本一致. 目录 一.接入预警大概思路 二 ...
- 从数据仓库双集群系统模式探讨,看GaussDB(DWS)的容灾设计
摘要:本文主要是探讨OLAP关系型数据库框架的数据仓库平台如何设计双集群系统,即增强系统高可用的保障水准,然后讨论一下GaussDB(DWS)的容灾应该如何设计. 当前社会.企业运行当中,大数据分析. ...
- YoyoGo微服务框架入门系列-基本概念
前言 Github开源:github.com/yoyofx/yoyogo 还请多多Star 之前简单介绍了YoyoGo微服务框架的基本内容,接下来了解下框架中的基本概念. 从一个简单Web服务Demo ...
- python截取视频制作动态表情包+文字
1:安装moviepy库 2:安装IPython库 代码如下: from moviepy.editor import * from IPython.display import Image def B ...
- Java-Netty前菜-NIO
NIO NIO主要有三个核心部分组成: buffer缓冲区 Channel管道 Selector选择器 在NIO中并不是以流的方式来处理数据的,而是以buffer缓冲区和Channel管道配合使用来处 ...
- sentinel降级误解
public void initDegradeRule(){ List<DegradeRule> rules=new ArrayList<>(); DegradeRule ru ...