|
|
在 C++11 里,for 循环的形式还能是基于范围的,如下所示:- int persons[5] = {1, 2, 3, 4, 5};
- for (int x : persons)
- cout << x << std::endl;
复制代码 实际上,该特性是为了 STL 而实际的。在这种 for 循环中,括号内的代码声明一个类型与容器存储的内容相同的变量,然后指出了容器的名称。接下来,循环体使用指定的变量依次访问容器中的每一个元素。
比如使用 STL 中的 for_each 函数:- for_each (books.begin(), books.end(), ShowReview);
复制代码 将其替换为基于范围的 for 循环则有:- for (auto x : books) ShowReview(x);
复制代码 这里,根据 books 的类型(假设是 vector(Review)),编译器能推断出 x 的类型为 Review,然而循环会依次将 books 中的每个 Review 对象传递给 ShowReview() 。
|
|