22-基于范围的for循环(C++11)
5.4 基于范围的for循环(C++11)
C++11新增了一种循环:基于范围(range-based)的for循环。这简化了一种常见的循环任务:对数组(或容器类,如vector和array)的每个元素执行相同的操作,如下例所示:
double prices[5] = {4.99, 10.99, 6.87, 7.99, 8.49};
for (double x : prices)
cout << x << std::endl;
其中,x最初表示数组prices的第一个元素。显示第一个元素后,不断执行循环,而x依次表示数组的其他元素。因此,上述代码显示全部5个元素,每个元素占据一行。总之,该循环显示数组中的每个值。
要修改数组的元素,需要使用不同的循环变量语法:
for (double &x : prices)
x = x * 0.80; //20% off sale
符号&表明x是一个引用变量,这个主题将在第8章讨论。就这里而言,这种声明让接下来的代码能够修改数组的内容,而第一种语法不能。
还可结合使用基于范围的for循环和初始化列表:
for (int x : {3, 5, 2, 8, 6})
cout << x << " ";
cout << ‘\n’;
然而,这种循环主要用于第16章将讨论的各种模板容器类。