本文翻译自: C++ Ranged for Loop
C++ 11中引入了一种特殊的for循环,特定的用于数组和vector中。比如:
// initialize an int array
int num[3] = {1, 2, 3};
// use of ranged for loop
for (int var : num) {
// code
}
在上述的案例中,for循环用于从头到尾遍历数组num,具体过程如图:
具体案例:
#include <iostream>
using namespace std;
int main() {
// define the collection in the loop itself
for (int n : {1, 2, 3, 4, 5}) {
cout << n << " ";
}
return 0;
}
输出结果:
1 2 3 4 5
然而,对这种for循环,最好的使用方法类似于这样:
int num[3] = {1, 2, 3};
// access memory location of elements of num
for (int &var : num) {
// code
}
这样就不需要将num的元素每一次复制给var,而是从num直接访问num中的元素,如图所示:
注: 如果你在遍历过程中不想修改数组/vector/集合中的元素,最好这样:
// collection is not modified in the loop
for (const int &var : num) {
// code
}