传统for循环适用于需控制索引的场景,如遍历数组;范围for循环简化容器遍历,提升可读性。

在C++中,for循环和范围for循环(range-based for loop)是两种常用的遍历方式。它们各有适用场景,掌握它们的用法可以提升代码的可读性和效率。
传统for循环的基本语法与使用
传统for循环适用于需要控制索引或执行固定次数操作的场景。其基本结构如下:
for (初始化; 条件判断; 更新操作) {
// 循环体
}
例如,遍历数组并打印每个元素:
- int arr[] = {1, 2, 3, 4, 5};
- for (int i = 0; i
- std::cout
- }
这种写法灵活,可以在循环中访问下标,适合需要索引参与计算的情况,比如反转数组、查找特定位置等。
立即学习“C++免费学习笔记(深入)”;
范围for循环的简洁写法
C++11引入了范围for循环,用于更方便地遍历容器或数组中的每一个元素。语法更简洁:
for (元素类型 变量名 : 容器或数组) {
// 使用变量处理当前元素
}
用同样的数组举例:
- int arr[] = {1, 2, 3, 4, 5};
- for (int value : arr) {
- std::cout
- }
如果不想拷贝元素(尤其是对象或大类型),建议使用引用避免性能损耗:
- for (const int& value : arr) { // 只读访问,推荐
- std::cout
- }
若需要修改原元素,则使用非常量引用:
- for (int& value : arr) {
- value *= 2; // 将数组每个元素翻倍
- }
适用容器类型与注意事项
范围for循环不仅支持普通数组,还支持标准库容器,如std::vector、std::list、std::array等:
- std::vector<:string> words = {"hello", "world"};
- for (const auto& word : words) {
- std::cout
- }
这里使用auto自动推导元素类型,搭配const auto&能写出通用且高效的代码。
注意:范围for依赖于容器支持begin()和end()函数。自定义类型若要支持范围for,也需提供这两个方法。
不适用于动态生成的数据流或条件不确定的循环场景。
基本上就这些。传统for适合精细控制,范围for让遍历更清晰安全。根据实际需求选择合适的方式,能让代码更易维护。











