C++ 中的 for-each 循环


2022年8月24日, Learn eTutorial
2090

除了“for”、“while”和“do-while”等更通用的循环方法外,C++ 语言还允许我们使用“for-each”循环,其目的相同。此循环接受一个遍历所有容器元素的函数。

C++ 11 引入了 for-each 循环,这种 for 循环结构使遍历可迭代数据集变得更容易。它通过省略初始化过程,并使用迭代器而不是遍历每个元素来完成此操作。那么,让我们来看看 for-each 循环结构。

在 C++ 中,for-each 循环是如何工作的?

语法


for(type variable_name : array/vector_name)
{
    loop statements
    ...
}
 

for-each 循环基本上遍历数组、向量或任何其他数据集的元素。它将当前元素的值赋给循环内声明的变量迭代器。

元素变量声明是循环初始化的一部分,我们在此声明将遍历数组或向量的变量。此处的类型是 variable_name 的数据类型。

array/vector 名称是循环将遍历的数据集的名称。

循环语句是用户可以使用迭代变量对相应元素执行的各种操作。

重要提示:建议变量的数据类型与数组或向量的数据类型相同。如果数据类型不同,元素将在存储到变量之前进行类型转换。

for-each 循环的示例

以下代码演示了如何在 C++ 中使用 for-each 循环。


#include<iostream>
using namespace std; 
int main() 
{ 
    int num_array[]={1,2,3,4,5};   //array initialization
    cout<<"The elements are: ";
    for(int i : num_array)
    {
        cout<<i<<" ";
    }
    return 0;
}

输出

The elements are: 1 2 3 4 5
Range Based for loop in C++

让我们逐行查看代码

数组 num_array[] 用值 1、2、3、4 和 5 初始化。

在循环结构内部,i 是存储当前数组元素值的变量。num_array 是数组名称,它也用作数组的基地址。

如您所见,每次迭代打印 i 都会给我们相应的数组元素,而不是像典型 for 循环那样给出数组索引。

请记住,在声明变量“i”时,我们可以使用 auto 数据类型而不是 int。这确保变量的类型由数组类型决定,并且不会发生数据类型冲突。

C++ 中 for-each 循环的优点

  • 它消除了出错的可能性,并提高了代码的可读性。
  • 非常简单且易于实现
  • 不需要预初始化迭代器

C++ 中 for-each 循环的缺点

  • 无法直接访问相应的元素索引。
  • 无法以相反的顺序遍历元素。
  • 它不允许用户跳过任何元素,因为它会遍历所有元素。

结论

C++ 中的 for-each 循环既有优点也有缺点。代码非常易于阅读,但它限制了标准 for 循环提供的一些操作。因此,用户必须决定他们希望循环做什么,然后相应地选择。