C++中map遍历方法包括:1. 使用begin()/end()正向迭代器遍历;2. C++11范围for循环(const auto&)更简洁高效;3. rbegin()/rend()实现逆序遍历;4. cbegin()/cend()用于只读安全访问;5. auto简化迭代器声明;6. 避免遍历时直接erase导致迭代器失效,应使用返回的合法迭代器。

在C++中,map 是一种常用的关联容器,用于存储键值对(key-value pairs),并自动根据键进行排序。遍历 map 是日常开发中的常见操作,而迭代器是实现遍历的核心工具。本文总结 C++ 中 map 的各种遍历方法,涵盖传统迭代器、基于范围的循环以及 const 迭代器等使用场景。
通过 begin() 和 end() 获取迭代器,从头到尾遍历 map:
#include <map>
#include <iostream>
using namespace std;
int main() {
map<string, int> scores = {{"Alice", 90}, {"Bob", 85}, {"Charlie", 95}};
for (auto it = scores.begin(); it != scores.end(); ++it) {
cout << "Key: " << it->first << ", Value: " << it->second << endl;
}
return 0;
}
其中 it->first 表示键,it->second 表示值。这是最基础也是最常用的遍历方式。
C++11 引入了范围 for 循环,语法更简洁:
for (const auto& pair : scores) {
cout << "Key: " << pair.first << ", Value: " << pair.second << endl;
}
使用 const auto& 可避免拷贝,提高效率,尤其适用于值类型较大的情况。
若需从最后一个元素开始遍历,可使用 rbegin() 和 rend():
for (auto rit = scores.rbegin(); rit != scores.rend(); ++rit) {
cout << "Key: " << rit->first << ", Value: " << rit->second << endl;
}
反向迭代器按降序访问键,适合需要逆序处理的逻辑。
Freepik Mystic
Freepik Mystic 是一款革命性的AI图像生成器,可以直接生*高清图像
174
查看详情
当 map 为 const 或希望保证不修改内容时,应使用 const 迭代器:
void printMap(const map<string, int>& m) {
for (auto it = m.cbegin(); it != m.cend(); ++it) {
cout << it->first << ": " << it->second << endl;
}
}
cbegin() 和 cend() 明确返回 const_iterator,增强代码安全性。
由于 map 迭代器类型较长,推荐使用 auto 自动推导:
auto it = scores.begin(); // 比 map<string,int>::iterator 更简洁
这不仅减少书写错误,也提升代码可读性。
遍历过程中避免插入或删除元素(除非使用 erase 返回的正确迭代器),否则可能导致迭代器失效。例如:
// 错误示例:边遍历边 erase 可能导致未定义行为
for (auto it = scores.begin(); it != scores.end(); ++it) {
if (it->second < 90) {
scores.erase(it); // 危险!it 失效
}
}
// 正确做法:使用 erase 返回的下一个有效迭代器
for (auto it = scores.begin(); it != scores.end(); ) {
if (it->second < 90) {
it = scores.erase(it);
} else {
++it;
}
}
基本上就这些。掌握这些 map 遍历方法和迭代器使用技巧,能让你在实际编程中更加高效和安全。关键是理解每种方式的适用场景,并合理选择语法形式。不复杂但容易忽略细节,比如 const 和 auto 的使用,值得在日常编码中养成习惯。
以上就是C++ map遍历方法大全_C++ map迭代器使用总结的详细内容,更多请关注其它相关文章!
# map遍历
# 编码
# 工具
# ai
# c++ map
# 是一种
# 邯郸全网营销seo优化方法
# 你在
# 玩具行业竞价推广营销
# 优质的网站建设宣传
# 苏州吴中抖音推广网站
# 贾汪区网络营销网站推广
# 任丘大型网站建设特价
# 湛江校园seo查询
# 互联网推广营销全链路
# 酒泉网站推广公司
# 网站建设前注意哪些
# 这是
# 第三方
# 自定义
# 微软
# 键值
# 随机数
# 迭代
# 遍历
# 代码可读性
# 键值对
# stream
# ios
# c++
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
《理想汽车》权限管理设置方法
以下哪一个是适应长期护理制度发展而设立的新职业
汽水音乐在线听歌网页版 汽水音乐在线听歌网页版入口
海棠阅读登录教程_详细讲解海棠登录操作
德邦快递查询入口登录官网 德邦快递单号查询系统入口
漫蛙manwa2网页版书签同步链接_漫蛙manwa多设备登录入口
如何取消数字签名
小米手机屏幕失灵乱跳怎么办 屏幕触控问题自检与临时解决方法【应急】
微星主板BIOS怎么调整内存时序_内存参数手动优化BIOS设置教程
金牛福袋获取攻略
获取WooCommerce产品在后台编辑页面的分类ID
PointNet++语义分割模型中类别变更引发的断言错误及标签处理策略
Win10怎么设置快速启动 Win10开启快速启动设置方法
sublime text 4如何安装_最新版sublime下载与汉化教程
《一起考教师》账号注销方法
mysql数据库索引类型有哪些_mysql索引类型解析
《雅迪智行》用手机开锁方法
CSS绝对定位与溢出控制:实现背景元素局部显示不触发滚动条
《漫蛙manwa2》防走失网页版链接2025
C++如何将字符串转换为大写或小写_C++ transform函数的使用技巧
Linux如何优化系统启动流程_Linux启动项优化方案
CodeIgniter 3 中基于 MySQL 数据高效生成动态图表教程
《崩坏:星穹铁道》3.6版本异相仲裁打法及配队推荐
飞飞漫画漫画阅读官网_飞飞漫画漫画阅读官网进入阅读
C++中的explicit关键字有什么作用_C++类型转换控制与explicit使用
被称为海蜈蚣的海洋动物是
微信朋友圈怎么设置三天可见 微信朋友圈设置指定天数可见步骤【教程】
百度地图离线地图无法加载如何解决 百度地图离线地图加载优化方法
Git命令与VS Code UI操作的对应关系解析
如何修改Windows截图的默认保存位置_告别C盘让桌面更整洁【教程】
《tt语音》超级玩家开通方法
windows server2019显卡驱动怎么安装_winserver2019显卡驱动安装与远程桌面优化
如何在CSS中清除浮动解决背景颜色不包裹内容问题_clear after技巧
悟空浏览器如何恢复关闭的标签页 悟空浏览器撤销关闭网页快捷键设置
J*a中导出MySQL表为SQL脚本的两种方法
J*aScript调试技巧_性能分析与内存快照
苹果电脑如何快速查看电池状态 苹果电脑电池信息快捷方法
CDR如何复制交互式填充色
MongoDB聚合管道:高效统计列表中各项的文档数量
解决PHP MySQL数据库更新无响应:SQL查询语法错误解析
word怎么将图片设置为页面背景并不影响打印_Word图片背景设置方法
《我的恋爱逃生攻略》中文名字输入方法
Highcharts雷达图轴线交点数值标注指南
Go语言反射机制:如何访问被嵌入结构体遮蔽的方法
天天漫画2025最新入口 天天漫画永久有效登录入口
百度输入法在AutoCAD中无法输入中文怎么办_百度输入法CAD输入异常解决方法
外卖小程序对接第三方配送
《全民k歌》音乐怎么下载到本地2025
智学网app怎么登录忘记密码_智学网app忘记密码找回与重新登录操作方法
《盗墓笔记手游》技能介绍
2025-12-01
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。