曲径通幽论坛

标题: 基于范围的 for 循环 [打印本页]

作者: easy    时间: 2014-1-13 22:04
标题: 基于范围的 for 循环
在 C++11 里,for 循环的形式还能是基于范围的,如下所示:
  1. int persons[5] = {1, 2, 3, 4, 5};
  2. for (int x : persons)
  3.    cout << x << std::endl;
复制代码
实际上,该特性是为了 STL 而实际的。在这种 for 循环中,括号内的代码声明一个类型与容器存储的内容相同的变量,然后指出了容器的名称。接下来,循环体使用指定的变量依次访问容器中的每一个元素。

比如使用 STL 中的 for_each 函数:
  1. for_each (books.begin(), books.end(), ShowReview);
复制代码
将其替换为基于范围的 for 循环则有:
  1. for (auto x : books) ShowReview(x);
复制代码
这里,根据 books 的类型(假设是 vector(Review)),编译器能推断出 x 的类型为 Review,然而循环会依次将 books 中的每个 Review 对象传递给 ShowReview() 。





欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2