免费试用平台网站源码,百度关键词刷搜索量,软件推广兼职可以做吗,做程序教程网站赚钱吗📘 C 范围 for 循环详解(Range-based for loop) 一、什么是范围 for 循环?
范围 for 循环(Range-based for loop) 是 C11 引入的一种简化容器/数组遍历的方式。它通过自动调用容器的 begin() 和 end() 方法…
📘 C++ 范围 for 循环详解(Range-based for loop)
一、什么是范围 for 循环?
范围 for 循环(Range-based for loop) 是 C++11 引入的一种简化容器/数组遍历的方式。它通过自动调用容器的 begin() 和 end() 方法,实现对每个元素的遍历,无需手动管理索引或迭代器。
二、语法格式
for(declaration : expression){// 循环体}
declaration:用于声明当前遍历的元素(可使用 auto 自动推导类型)
expression:表示要遍历的容器或数组
三、基本原理
✅ 自动调用 begin() 和 end()
范围 for 循环会自动调用容器的 begin() 和 end() 方法,获取起始和结束迭代器,然后依次遍历每个元素。
示例说明:
std::vector<int> numbers ={1,2,3,4,5};for(int num : numbers){std::cout << num <<" ";}
✅ 等价于传统写法:
std::vector<int> numbers ={1,2,3,4,5};for(auto it = numbers.begin(); it != numbers.end();++it){int num =*it;std::cout << num <<" ";}
四、适用对象
范围 for 循环适用于以下对象:
类型
是否支持
示例
数组
✅ 支持
int arr[] = {1, 2, 3};
标准库容器
✅ 支持
std::vector, std::list, std::map
自定义容器类
✅ 支持
需要实现 begin() 和 end() 方法
字符串(std::string)
✅ 支持
逐字符遍历
原始指针容器
❌ 不支持
没有 begin()/end() 方法
五、优点
优点
说明
代码简洁
避免手动写 begin()/end()
安全性高
不易越界,适合只读遍历
可读性强
更贴近自然语言,易于理解
自动类型推导
可使用 auto 自动识别元素类型
六、局限性
局限
说明
不能直接访问索引
无法通过循环变量获取当前索引
不能反向遍历
只能从前往后遍历
不能跳过元素
无法控制步长(如 i += 2)
不能修改容器结构
不能在循环中添加/删除元素
七、代码示例
1. 遍历数组
int arr[]={1,2,3,4,5};for(int num : arr){std::cout << num <<" ";}// 输出: 1 2 3 4 5
2. 遍历 std::vector
#include<iostream>#include<vector>intmain(){std::vector<int> nums ={10,20,30,40,50};for(auto num : nums){std::cout << num <<" ";}// 输出: 10 20 30 40 50return0;}