C++如何遍历map容器_C++ map迭代器与auto关键字遍历方法

C++中遍历map常用迭代器和auto关键字,推荐使用范围for循环结合const auto&高效访问键值对

c++如何遍历map容器_c++ map迭代器与auto关键字遍历方法

在C++中,map 是一种关联容器,用于存储键值对(key-value pairs),并自动根据键进行排序。遍历 map 容器是日常开发中的常见操作,常用的方法包括使用迭代器和 auto 关键字。下面详细介绍这两种方式。

使用迭代器遍历 map

map 提供了 begin() 和 end() 成员函数,分别返回指向第一个元素和末尾之后位置的迭代器。通过循环结合迭代器可以访问每个键值对。

map 的迭代器指向的是 std::pair 类型的对象,first 成员为键,second 成员为值。

#include #include using namespace std;int main() {    map scores = {{"Alice", 95}, {"Bob", 87}, {"Charlie", 92}};    // 使用普通迭代器遍历    for (map::iterator it = scores.begin(); it != scores.end(); ++it) {        cout << "Key: " <first << ", Value: " <second << endl;    }    return 0;}

输出结果:

立即学习“C++免费学习笔记(深入)”;

Key: Alice, Value: 95
Key: Bob, Value: 87
Key: Charlie, Value: 92

使用 const_iterator 遍历只读 map

如果 map 是 const 或你只想进行只读访问,应使用 const_iterator,这样更安全且符合语义。

for (map::const_iterator it = scores.cbegin(); it != scores.cend(); ++it) {    cout <first << ": " <second << endl;}

使用 auto 关键字简化遍历(C++11 起)

C++11 引入了 auto 关键字,编译器可自动推导变量类型,极大简化了迭代器声明。

// 使用 auto 声明迭代器for (auto it = scores.begin(); it != scores.end(); ++it) {    cout <first < " <second << endl;}

使用范围 for 循环 + auto(推荐写法)

C++11 还支持基于范围的 for 循环,结合 auto 可以写出更简洁、易读的代码。

// 范围 for 循环遍历 mapfor (const auto& pair : scores) {    cout << pair.first << ": " << pair.second << endl;}

说明:

const auto& 表示对每一对键值引用访问,避免拷贝 pair 对象,提高效率。 如果需要修改值,可使用 auto&,但不能修改 key(map 的 key 是 const 的)。

遍历时修改 value 值的例子

// 修改 map 中的 valuefor (auto& pair : scores) {    pair.second += 5;  // 加分操作    cout << pair.first << "'s new score: " << pair.second << endl;}

注意:不能通过 pair.first 修改 key,因为 map 中的 key 是不可变的。

基本上就这些。使用 auto 和范围 for 循环是现代 C++ 推荐的方式,代码更清晰、不易出错。迭代器方式在需要反向遍历或精确控制时仍有用武之地。掌握这些方法,能更高效地处理 map 容器。

以上就是C++如何遍历map容器_C++ map迭代器与auto关键字遍历方法的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1486167.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月19日 09:34:37
下一篇 2025年12月19日 09:34:50

相关推荐

发表回复

登录后才能评论
关注微信