新闻中心

C++ 如何使用 for-each 循环 (基于范围的 for 循环)_C++ 范围 for 循环遍历容器方法

2025-11-06
浏览次数:
返回列表
C++11引入的基于范围的for循环使遍历更简洁,语法为for (declaration : range),可直接遍历数组或容器,如int arr[] = {1,2,3,4,5}; for (int x : arr)输出各元素。

c++ 如何使用 for-each 循环 (基于范围的 for 循环)_c++ 范围 for 循环遍历容器方法

C++11 引入了基于范围的 for 循环(range-based for loop),也称为 for-each 循环,它让遍历容器或数组变得更加简洁直观。你不再需要手动使用迭代器或下标来访问元素。

基本语法

range-based for 循环的基本格式如下:

for (declaration : range) {
    // 操作每个元素
}

其中:

  • declaration:声明一个变量,类型应与容器中元素类型兼容,通常用 auto
  • range:要遍历的容器、数组或其他可迭代对象

遍历普通数组

例如,遍历一个 int 数组:

int arr[] = {1, 2, 3, 4, 5};
for (int x : arr) {
    std::cout << x << " ";
}

输出:1 2 3 4 5

如果想避免复制,尤其是处理大对象时,推荐使用引用:

for (const int& x : arr) {
    std::cout << x << " ";
}

遍历标准容器(如 vector、list、set)

STL 容器天然支持范围 for 循环。例如遍历 vector:

刺鸟创客 刺鸟创客

一款专业高效稳定的AI内容创作平台

刺鸟创客 110 查看详情 刺鸟创客
std::vector<std::string> words = {"hello", "world", "cpp"};
for (const auto& word : words) {
    std::cout << word << " ";
}

这里使用 const auto& 可以自动推导类型并避免拷贝字符串。

如果是 map,可以这样遍历键值对:

std::map<std::string, int> ages = {{"Alice", 25}, {"Bob", 30}};
for (const auto& pair : ages) {
    std::cout << pair.first << ": " << pair.second << "\n";
}

修改容器中的元素

如果希望在循环中修改原容器的元素,必须使用非 const 引用:

std::vector<int> nums = {1, 2, 3};
for (auto& x : nums) {
    x *= 2;
}
// nums 现在是 {2, 4, 6}

使用值或 const 引用都无法修改原始数据。

注意事项

  • 范围 for 要求容器支持 begin()end() 函数,标准容器都满足
  • 不能用于动态分配的数组(如 new int[10]),但可用于 std::array 或指针加长度的手动管理方式(不推荐)
  • 循环内部不要添加或删除容器元素,否则可能造成未定义行为
  • 适用于任何实现了 begin/end 的自定义类型

基本上就这些。用好范围 for 循环能让代码更清晰安全。

以上就是C++ 如何使用 for-each 循环 (基于范围的 for 循环)_C++ 范围 for 循环遍历容器方法的详细内容,更多请关注其它相关文章!


# 推荐使用  # 门户网站推广思路  # 空气炸锅营销推广定位  # 陕西seo综合查询  # 河北大型网站建设配置  # 武侯区找人做seo咨询  # 海口旅游类网站建设  # 同安关键词排名  # 可靠营销推广方式有哪些  # 阿里营销宝定位推广  # 东昌府网站推广的公司  # c++  # 尤其是  # 库中  # 游戏开发  # 如何实现  # 重写  # 数据结构  # 迭代  # 如何使用  # 遍历  # 可迭代对象 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: TikTok搜索不到用户发布内容怎么办 TikTok用户内容搜索优化方法  MAC怎么在地图App里使用“四处看看”_MAC体验部分城市的3D实景街景  Yandex免登录网页版地址 Yandex搜索引擎官方访问入口  192.168.1.1管理中心入口 192.168.1.1路由器网页设置平台  AO3最新官网入口公告_2025AO3镜像站实时查询方法  J*a里如何使用N*igableMap进行导航操作_可导航Map操作技巧解析  QQ邮箱网页版登录入口 QQ邮箱官方在线使用平台  Steam官网入口直达 Steam注册及登录步骤  zookeeper 都有哪些功能?  新三国志曹操传110级星符试炼夏侯渊极难攻略  Google翻译怎么语音输入_Google翻译语音输入功能使用与设置方法  必由学官方网站入口 必由学学生教师共用登录通道  163邮箱官方主页登录 直达网易邮箱登录核心页面  css元素hover动画延迟生效怎么办_使用animation-delay调整触发时间  J*aScript数组对象转换:按指定键分组与值收集  探索高级语言到原生C/C++的转译:挑战与内存管理策略  铁路12306卧铺选择攻略 铁路12306下铺座位预定技巧  高德地图怎么看全景照片_高德地图全景照片浏览教程  在Blazor WebAssembly应用中动态注入客户端特定指标代码的策略  c++ 获取系统当前时间 c++时间戳获取方法  大象笔记网页版入口 印象笔记网页版登录入口  C++如何实现一个智能指针_手动实现C++ shared_ptr的引用计数功能  lar*el怎么安全地存储和获取配置文件中的敏感信息_lar*el敏感信息安全存储方法  CSS布局:解决全屏元素100%尺寸与外边距导致的页面溢出问题  黑猫投诉统一入口官网 消费者权益保护投诉平台  iCloud登录入口网页版 苹果iCloud官网登录  钉钉视频会议声音异常如何处理 钉钉会议音频修复技巧  将HTML Canvas内容转换为可上传的图像文件(File对象)  Excel中VLOOKUP的第四个参数是干什么用的_Excel VLOOKUP第四参数作用解析  Yandex浏览器官方网页版入口 Yandex浏览器最新版官网  Lar*el头像管理:图片缩放与旧文件删除的最佳实践  cad怎么合并重叠的线段_cad清理重复重叠线条的操作方法  如何将HTML表格多行数据保存到Google Sheets  处理嵌套交互式控件:前端可访问性指南  铁路12306官网网页端快速入口 铁路12306官方首页登录教程  Go与Ruby之间实现AES加密互通:CFB模式下的密钥长度匹配策略  汽水音乐在线版入口_汽水音乐网页播放手册  win11开机启动修复循环怎么办 Win11无法进入系统高级启动解决方法【修复】  微信客户端如何收红包_微信客户端接收红包使用教程  Odoo 16:在表单视图中基于当前记录动态修改Tree视图属性  铃兰之剑为这和平的世界希里技能组及加点推荐  vivo手机参数配置怎么增强信号_vivo手机参数配置信号增强方法  AO3网页版合集入口 Archive of Our Own同人作品浏览指南  C++如何实现单例模式_C++设计模式之线程安全的单例写法  poki网页游戏推荐_poki免费游戏平台入口  Python实时数据流中的动态最值查找策略  提升Kafka消费者健壮性:会话超时处理与消息处理语义  qq邮箱发邮件给国外发不出去_QQ邮箱国际邮件发送失败原因与解决  整合Supabase认证与Django模型:跨模式迁移的解决方案  漫蛙Manwa2官网入口地址分享 漫蛙漫画PC版永久访问通道 

搜索