曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 3767|回复: 0
打印 上一主题 下一主题

[C++11] 基于范围的 for 循环

[复制链接]

716

主题

734

帖子

2946

积分

超级版主

Rank: 9Rank: 9Rank: 9

积分
2946
跳转到指定楼层
楼主
发表于 2014-1-13 22:04:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在 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() 。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2024-4-30 14:25 , Processed in 0.073112 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表