新闻中心
C++如何遍历map容器_C++ map迭代器与auto关键字遍历方法
C++中遍历map常用迭代器和auto关键字,推荐使用范围for循环结合const auto&高效访问键值对。

在C++中,map 是一种关联容器,用于存储键值对(key
-value pairs),并自动根据键进行排序。遍历 map 容器是日常开发中的常见操作,常用的方法包括使用迭代器和 auto 关键字。下面详细介绍这两种方式。
使用迭代器遍历 map
map 提供了 begin() 和 end() 成员函数,分别返回指向第一个元素和末尾之后位置的迭代器。通过循环结合迭代器可以访问每个键值对。
map 的迭代器指向的是 std::pair 类型的对象,first 成员为键,second 成员为值。
#include <iostream>
#include <map>
using namespace std;
int main() {
map<string, int> scores = {{"Alice", 95}, {"Bob", 87}, {"Charlie", 92}};
// 使用普通迭代器遍历
for (map<string, int>::iterator it = scores.begin(); it != scores.end(); ++it) {
cout << "Key: " << it->first << ", Value: " << it->second << endl;
}
return 0;
}
输出结果:
Key: Alice, Value: 95Key: Bob, Value: 87
Key: Charlie, Value: 92
使用 const_iterator 遍历只读 map
如果 map 是 const 或你只想进行只读访问,应使用 const_iterator,这样更安全且符合语义。
for (map<string, int>::const_iterator it = scores.cbegin(); it != scores.cend(); ++it) {
cout << it->first << ": " << it->second << endl;
}
使用 auto 关键字简化遍历(C++11 起)
C++11 引入了 auto 关键字,编译器可自动推导变量类型,极大简化了迭代器声明。
美图云修
商业级AI影像处理工具
50
查看详情
// 使用 auto 声明迭代器
for (auto it = scores.begin(); it != scores.end(); ++it) {
cout << it->first << " -> " << it->second << endl;
}
使用范围 for 循环 + auto(推荐写法)
C++11 还支持基于范围的 for 循环,结合 auto 可以写出更简洁、易读的代码。
// 范围 for 循环遍历 map
for (const auto& pair : scores) {
cout << pair.first << ": " << pair.second << endl;
}
说明:
- const auto& 表示对每一对键值引用访问,避免拷贝 pair 对象,提高效率。
- 如果需要修改值,可使用 auto&,但不能修改 key(map 的 key 是 const 的)。
遍历时修改 value 值的例子
// 修改 map 中的 value
for (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关键字遍历方法的详细内容,更多请关注其它相关文章!
# 加分
# 海口seo接单
# 唐山营销推广直播平台
# 微信公共号营销推广方案
# 景德镇网站seo
# 盘锦抖音seo
# 外贸SEO课程拼课
# 网销蜂蜜营销推广方案
# 广州网站优化开户
# 短视频营销推广策划文案
# 如何做客户网站推广赚钱
# 第一个
# 是一种
# ai
# 边缘
# 的是
# 游戏开发
# 美图
# 键值
# 迭代
# 遍历
# 键值对
# stream
# ios
# c++
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
支付宝碰一碰设备是REDMI手机吗 博主拆机辟谣:处理器、内存都不一样
Python自定义类排序:解决lambda键值访问TypeError的实践指南
如何使用J*aScript精确选择并批量修改特定父元素下子链接的样式
使用J*aScript检测输入元素是否包含在特定类中
如何使用Rector自动化升级旧代码_通过Composer安装和配置Rector进行代码重构
NRF24L01数据传输深度解析:解决大载荷接收异常与分包策略
vivo浏览器怎么扫描二维码 vivo浏览器内置扫一扫功能使用方法
2026年发布! 美少女养成动作RPG《神剑少女战记》发布实机演示
MinIO大规模对象列表性能瓶颈深度解析与外部元数据管理策略
sublime如何配置Go语言开发环境_sublime搭建Golang编译运行系统
整合Supabase认证与Django模型:跨模式迁移的解决方案
电脑IP地址怎么查 查看本机IP地址的几种方法
知音漫客正版漫画平台_知音漫客官网账号登录
在J*a中如何开发简易仓库管理与库存统计_仓库管理库存统计项目实战解析
sublime怎么格式化代码_sublime代码美化与一键排版插件配置
“在文档元素之后找到了标记”是什么错误? 检查并修复XML中多个根元素的3个方法
理解J*aScript Promise的微任务队列与执行顺序
漫蛙漫画官方首页 漫蛙2漫画在线阅读入口
Android Studio计算器C键逻辑错误排查与修复:条件判断优化指南
MAC怎么安装Homebrew包管理器_MAC为开发者和高级用户安装命令行工具
Win10如何恢复误删的快捷方式_Win10重建常用软件快捷方式
python3时间如何用calendar输出?
Pygame教程:解决用户输入与游戏状态更新不同步问题
深入理解字体排版:Adobe光学字偶距与CSS字偶距的差异与实现
QQ邮箱官方网站登录入口_QQ邮箱网页版在线使用
自定义Bag-of-Words实现:处理带负号的词汇权重
Odoo 16:在表单视图中基于当前记录动态修改Tree视图属性
PDF怎么合并PDF并保持格式_PDF合并文件保持排版教程
HTML空白字符处理机制:渲染、DOM与编码实践
在J*a中如何捕获IndexOutOfBoundsException_索引越界异常防护方法说明
KFC套餐升级怎么获取优惠代码_KFC套餐升级活动与优惠代码获取方法
一加手机拍照效果不好怎么办 一加哈苏影像调校与专业模式使用教程【高手篇】
12306怎么选座位选到安静区_12306选座安静区域选择策略
顺丰快件物流信息 官方网站查询入口
J*aScript中安全有效地处理localStorage字符串数据
基于动态规划的房屋花卉种植最小成本算法详解
品牌机怎么重装系统 联想/戴尔/惠普笔记本恢复出厂系统教程
反效果?《战地6》免费试玩开启后玩家数不升反降
CSS如何设置hover状态颜色_hover伪类调整背景或文字颜色
html5 app怎么运行环境_配html5 app运行环境【教程】
在J*a中如何开发在线活动报名与管理系统_活动报名管理项目实战解析
谷歌邮箱注册显示错误Gmail服务器异常与延迟处理
J*aScript对象创建方式_J*aScript设计模式应用
蓝湖怎样用切图标注提对接效率_蓝湖用切图标注提对接效率【设计对接】
在Go语言中利用后缀数组处理多字符串:实现高效文本匹配与自动补全
CSS Flexbox与媒体查询:实现响应式布局中元素的并排与堆叠
聚水潭ERP登录页面入口 聚水潭ERP官网登录界面
Mac怎么查看崩溃日志_Mac控制台错误报告分析
163邮箱网页版入口导航平台 163邮箱网页版登录入口官网导航
黑猫投诉统一入口官网 消费者权益保护投诉平台


2025-11-26
浏览次数:次
返回列表