除了“for”、“while”和“do-while”等更通用的循环方法外,C++ 语言还允许我们使用“for-each”循环,其目的相同。此循环接受一个遍历所有容器元素的函数。
C++ 11 引入了 for-each 循环,这种 for 循环结构使遍历可迭代数据集变得更容易。它通过省略初始化过程,并使用迭代器而不是遍历每个元素来完成此操作。那么,让我们来看看 for-each 循环结构。
语法
for(type variable_name : array/vector_name)
{
loop statements
...
}
for-each 循环基本上遍历数组、向量或任何其他数据集的元素。它将当前元素的值赋给循环内声明的变量迭代器。
元素变量声明是循环初始化的一部分,我们在此声明将遍历数组或向量的变量。此处的类型是 variable_name 的数据类型。
array/vector 名称是循环将遍历的数据集的名称。
循环语句是用户可以使用迭代变量对相应元素执行的各种操作。
重要提示:建议变量的数据类型与数组或向量的数据类型相同。如果数据类型不同,元素将在存储到变量之前进行类型转换。
以下代码演示了如何在 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

让我们逐行查看代码
数组 num_array[] 用值 1、2、3、4 和 5 初始化。
在循环结构内部,i 是存储当前数组元素值的变量。num_array 是数组名称,它也用作数组的基地址。
如您所见,每次迭代打印 i 都会给我们相应的数组元素,而不是像典型 for 循环那样给出数组索引。
请记住,在声明变量“i”时,我们可以使用 auto 数据类型而不是 int。这确保变量的类型由数组类型决定,并且不会发生数据类型冲突。
C++ 中的 for-each 循环既有优点也有缺点。代码非常易于阅读,但它限制了标准 for 循环提供的一些操作。因此,用户必须决定他们希望循环做什么,然后相应地选择。