0

0

c++ for range循环 c++11范围for循环教程

尼克

尼克

发布时间:2025-11-26 08:39:58

|

271人浏览过

|

来源于php中文网

原创

C++11引入范围for循环,简化容器和数组遍历。语法为for (declaration : range),自动处理迭代,无需手动管理下标或指针,提升代码安全性和可读性。

c++ for range循环 c++11范围for循环教程

C++11 引入了基于范围的 for 循环(range-based for loop),让遍历容器或数组变得更简洁、更安全。它自动处理迭代器,不需要手动管理下标或指针。

基本语法

范围 for 循环的语法如下:

for (declaration : range) {
    // 循环体
}

其中:

  • declaration:声明一个变量,用来接收 range 中的每个元素。
  • range:要遍历的对象,比如数组、vector、string 或其他支持迭代的容器。

遍历数组

使用范围 for 遍历普通数组非常直观:

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

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

输出结果为:1 2 3 4 5

言笔AI论文写作
言笔AI论文写作

Deepseek论文写作助手 - 智能生成专业论文

下载

注意:这种写法不能获取数组索引,只适合只需要元素值的场景。

使用引用避免拷贝

如果容器中存储的是大对象(如 string、自定义类等),直接用值会引发不必要的拷贝。应该使用引用:

std::vector words = {"hello", "world", "cpp"};
for (const std::string& word : words) {
    std::cout << word << std::endl;
}
  • 使用 const std::string& 可避免拷贝,同时防止修改原数据。
  • 如果需要修改元素,使用 std::string&

支持的容器类型

以下容器都支持范围 for 循环:

  • 数组(内置数组、std::array)
  • std::vector, std::list, std::deque
  • std::map, std::unordered_map(遍历时是 std::pair 类型)
  • std::string

示例:遍历 map

std::map m = {{1, "one"}, {2, "two"}};
for (const auto& pair : m) {
    std::cout << pair.first << ": " << pair.second << std::endl;
}

注意事项

  • 不能用于动态分配的数组(即通过 new 创建的指针)。
  • 无法直接访问当前索引位置,如需索引,应使用传统 for 循环或额外计数。
  • 不要在循环中修改容器结构(如添加/删除元素),会导致未定义行为。

基本上就这些。C++11 的范围 for 让代码更清晰,推荐在能用的地方优先使用。

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

315

2023.08.02

c语言const用法
c语言const用法

const是关键字,可以用于声明常量、函数参数中的const修饰符、const修饰函数返回值、const修饰指针。详细介绍:1、声明常量,const关键字可用于声明常量,常量的值在程序运行期间不可修改,常量可以是基本数据类型,如整数、浮点数、字符等,也可是自定义的数据类型;2、函数参数中的const修饰符,const关键字可用于函数的参数中,表示该参数在函数内部不可修改等等。

523

2023.09.20

golang map内存释放
golang map内存释放

本专题整合了golang map内存相关教程,阅读专题下面的文章了解更多相关内容。

75

2025.09.05

golang map相关教程
golang map相关教程

本专题整合了golang map相关教程,阅读专题下面的文章了解更多详细内容。

32

2025.11.16

golang map原理
golang map原理

本专题整合了golang map相关内容,阅读专题下面的文章了解更多详细内容。

59

2025.11.17

java判断map相关教程
java判断map相关教程

本专题整合了java判断map相关教程,阅读专题下面的文章了解更多详细内容。

36

2025.11.27

Golang gRPC 服务开发与Protobuf实战
Golang gRPC 服务开发与Protobuf实战

本专题系统讲解 Golang 在 gRPC 服务开发中的完整实践,涵盖 Protobuf 定义与代码生成、gRPC 服务端与客户端实现、流式 RPC(Unary/Server/Client/Bidirectional)、错误处理、拦截器、中间件以及与 HTTP/REST 的对接方案。通过实际案例,帮助学习者掌握 使用 Go 构建高性能、强类型、可扩展的 RPC 服务体系,适用于微服务与内部系统通信场景。

6

2026.01.15

公务员递补名单公布时间 公务员递补要求
公务员递补名单公布时间 公务员递补要求

公务员递补名单公布时间不固定,通常在面试前,由招录单位(如国家知识产权局、海关等)发布,依据是原入围考生放弃资格,会按笔试成绩从高到低递补,递补考生需按公告要求限时确认并提交材料,及时参加面试/体检等后续环节。要求核心是按招录单位公告及时响应、提交材料(确认书、资格复审材料)并准时参加面试。

37

2026.01.15

公务员调剂条件 2026调剂公告时间
公务员调剂条件 2026调剂公告时间

(一)符合拟调剂职位所要求的资格条件。 (二)公共科目笔试成绩同时达到拟调剂职位和原报考职位的合格分数线,且考试类别相同。 拟调剂职位设置了专业科目笔试条件的,专业科目笔试成绩还须同时达到合格分数线,且考试类别相同。 (三)未进入原报考职位面试人员名单。

51

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
C# 教程
C# 教程

共94课时 | 6.7万人学习

C 教程
C 教程

共75课时 | 4万人学习

C++教程
C++教程

共115课时 | 12.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号