std::map 是一个关联容器,用于存储键值对(key-value pairs)。它基于红黑树(一种自平衡二叉搜索树)实现,确保元素按键的有序性。
【一】map 介绍
std::map 存储唯一的键(key)和对应的值(value)。键用于索引值,键必须是唯一的(如果插入重复键,新值会覆盖旧值)。元素按键的升序自动排序。需要包含头文件 <map>,并使用 std::map<KeyType, ValueType> 声明。
示例:定义一个 map 存储学生 ID(键)和姓名(值),如 std::map<int, std::string> studentMap。
通俗理解:一个存储映射关系(键 - 值)数据的关联容器,它需要两个数据类型进行实例化。
【二】主要特点
(1)有序存储
元素始终按键排序,遍历时按顺序输出。例如:插入键为 3、1、2 的元素,遍历输出顺序为 1、2、3。
(2)键的唯一性
每个键在 map 中是唯一的,如果尝试插入相同的键,会覆盖之前的值。insert 插入相同的键会失败,operator[] 会进行覆盖。
(3)动态大小
自动调整存储空间,无需手动管理。
(4)迭代器支持
支持双向(正向/反向)迭代器。
【三】接口学习
(1)默认构造
只需要两个数据类型(内置类型、容器类型、自定义类型均可)和变量名即可实例化。
#include <iostream>
#include <map>
using namespace std;
int main() {
map<string, string> V1;
map<int, string> V2;
map<int, int> V3;
return 0;
}
(2)插入(重点)
map 的插入不同于以往学习的所有容器的操作:每次插入都涉及到 pair 的使用。
**原因:**这种关联映射型的容器存储,需要 **pair(类模板)**或者 **make_pair(函数模板)**提供一种安全、高效的封装方式,可以将 key 和 value 合二为一成一个对象!
- pair:是存储键值对的类型,需要显式指定类型。
- make_pair:是创建 pair 对象的辅助函数,自动推断类型,简化代码。
- 第一个成员(通常命名为
first)键(key),类型为const Key(键在 map 中不可改)。 - 第二个成员(通常命名为
second)值(value),类型为T(值可以修改)。
- 第一个成员(通常命名为
(1)间接创建类模板插入
map<string, string> V1;
;
V(K1);


