C++中遍历std::map推荐使用基于范围的for循环,元素为std::pair类型,键用.first、值用.second访问;需删除元素时应使用迭代器配合erase()返回值,且map遍历结果按键升序排列。

遍历 C++ 中的 std::map 有多种方式,最常用的是基于范围的 for 循环(C++11 起),也支持传统迭代器和 while 循环。关键点是:map 的每个元素是 std::pair 类型,访问键用 .first,值用 .second。
用范围 for 循环(推荐)
简洁、安全、可读性高,适合大多数场景。
#include#include
用迭代器遍历(兼容旧标准)
显式使用 begin() 和 end(),适用于需控制遍历过程(如中途 break/erase)的场景。
for (auto it = m.begin(); it != m.end(); ++it) {
std::cout << "key=" << it->first << ", value=" << it->second << '\n';
}
// 或用 const_iterator(更严谨,尤其在 const map 上)
for (std::map::const_iterator it = m.cbegin();
it != m.cend(); ++it) {
std::cout << it->first << " → " << it->second << '\n';
}
只遍历 key 或只遍历 value
如果只需要键或值,可用结构化绑定(C++17)或单独提取。
本文介绍了Python操作MYSQL、执行SQL语句、获取结果集、遍历结果集、取得某个字段、获取表字段名、将图片插入数据库、执行事务等各种代码实例和详细介绍,代码居多,是一桌丰盛唯美的代码大餐。如果想查看在线版请访问:https://www.jb51.net/article/34102.htm
- C++17 结构化绑定(清晰直观):
for (const auto& [k, v] : m) {
std::cout << "key: " << k << '\n'; // 只用 k
// std::cout << "value: " << v << '\n';
}
- 传统方式(遍历中只取
it->first或it->second)
遍历时安全删除元素
直接用范围 for 删除会失效迭代器。必须用迭代器 + erase() 返回值(C++11 起)。
// 删除所有 value == "apple" 的项
for (auto it = m.begin(); it != m.end(); ) {
if (it->second == "apple") {
it = m.erase(it); // erase 返回下一个有效迭代器
} else {
++it;
}
}
基本上就这些。选范围 for 最省心;需要删元素时务必用迭代器配合 erase 返回值;注意 map 天然按键升序排列,遍历结果总是有序的。









