C++中map是基于红黑树的关联容器,自动按键排序并保证唯一性。需包含头文件,定义如std::map studentScores; 支持三种插入方式:下标[]、insert()、emplace(),其中[]访问不存在键时会创建并默认初始化。可用at()安全访问,避免越界。通过范围for循环遍历,元素为pair类型,first为键second为值。find()查找返回迭代器,erase()删除指定键值对,另有size()、empty()、clear()等常用方法。map适用于有序存储与快速查找场景。

在C++中,map 是标准模板库(STL)中一个非常实用的关联容器,用于存储键值对(key-value pairs),并能根据键快速查找对应的值。它底层通常基于红黑树实现,保证键的唯一性和自动排序。
包含头文件并定义map
使用 map 需要包含头文件 ,然后通过模板参数指定键和值的类型。
例如,定义一个以字符串为键、整数为值的 map:
std::map<:string int> studentScores;
立即学习“C++免费学习笔记(深入)”;
这表示每个学生姓名(string)对应一个分数(int)。
插入键值对的几种方式
向 map 中添加数据有多种方法,常用如下:
- 使用 下标操作符 [ ]:studentScores["Alice"] = 95;
- 使用 insert() 方法:studentScores.insert({"Bob", 87});
- 使用 emplace() 原地构造:studentScores.emplace("Charlie", 90);
注意:使用 [ ] 操作符时,若键不存在会自动创建,默认初始化值为0(对int而言),已存在则覆盖。
访问和修改值
通过键可以直接访问对应的值:
int score = studentScores["Alice"];
也可以用 at() 方法,它在键不存在时会抛出异常(std::out_of_range),更安全:
int score = studentScores.at("Alice");
修改值的方式与插入相同,直接赋值即可:
studentScores["Alice"] = 98;
遍历map中的所有元素
可以使用范围 for 循环遍历 map,每个元素是 std::pair 类型:
for (const auto& pair : studentScores) {
std::cout
}
其中 first 是键,second 是值。使用 const auto& 可避免拷贝,提高效率。
查找和删除键值对
使用 find() 判断键是否存在:
auto it = studentScores.find("Bob");
if (it != studentScores.end()) {
std::cout first " second;
}
删除某个键值对使用 erase():
studentScores.erase("Bob");
其他常用操作
- size():获取键值对数量
- empty():判断是否为空
- clear():清空所有数据
map 会自动按键的升序排列(支持 基本上就这些,map 使用起来直观高效,适合需要有序查找和唯一键的场景。










