C++ 中 for 与 for_each 的用法
for (;;)
for
语句是非常常见的重复执行语句。观察以下示例:
1 |
|
for
语句有三部分,中间用分号隔开:
- 第一条语句是初始化表达式,只在重复执行开始的时候在所有语句之前执行一次。
- 第二条语句是状态表达式,只有这个表达式返回真值才会继续重复执行。
- 第三条语句是循环表达式,在内容执行一次完毕以后执行。执行该语句后将会评估状态表达式,判断是否继续重复执行。
这三条语句都允许为空。其中,初始化表达式和循环表达式都可以包含多个用逗号分隔的语句,例如:
1 | for (int i=1,j=1;;i++,j++){ |
for_each
观察以下代码:
1 |
|
这个程序使用 for_each
来输出这个构造完毕的斐波那契数列。
for_each
是基于范围的,用逗号分隔的三个区域分别指示了开始、结尾和方法,for_each
将对范围内的每个元素执行方法。
for (:)
这是 C++11 中引入的内容。先看一个例子:
1 |
|
其结果是遍历了数组中的每个元素并且输出。这种写法同样是基于范围的,此处 i
是数组(或者容器)中元素的一个副本。这种写法因其实用性更好,基本代替了 for_each
。
如果需要改变数组(或者容器)中的元素,可以采用如下方式:
1 | for (int &i:num){ |
此时的 i
是这个数组中的元素的引用,在修改 i
的同时也会修改数组中的元素。