概述
std::map 是 C++ 标准库中基于红黑树实现的关联容器,用于存储键值对(Key-Value Pair)。它支持通过 Key 快速查找对应的 Value,且 Key 在容器中保持有序。相比 set,map 多了一层映射关系,底层依然遵循 O(logN) 的增删查效率。
1. 核心概念:键值对与 pair
在深入接口之前,理解 pair 很有必要。map 内部存储的数据结构本质上是 pair<const Key, T>。first 成员对应 Key,second 成员对应 Value。Key 不可变,Value 可变,这保证了树结构的稳定性。
#include <utility>
#include <iostream>
int main() {
// pair 将两个不同类型的数据组合在一起
std::pair<int, std::string> p(1, "apple");
std::cout << p.first << ": " << p.second << std::endl;
return 0;
}
注意,map 默认不支持 Key 重复。如果需要允许重复 Key,应使用 multimap。
2. 构造与初始化
map 提供了多种构造方式,最常用的是列表初始化。
2.1 默认构造
std::map<int, int> s1; // 默认使用 less<Key> 比较器
2.2 列表初始化 (C++11)
这是最简洁的方式,直接传入键值对集合。
std::map<int, int> s1 = {{1, 2}, {3, 4}, {5, 6}};
2.3 迭代器区间构造
适用于从其他容器或范围复制数据。
;


