C++11简化了for循环的使用,对于一个有确定范围的对象,可以直接使用基于范围的for循环:
#include <iostream>
using namespace std;
int main(){
int a[] = {1, 2, 3, 4};
for(int m : a) //m为迭代后的遍历,冒号后的a表示迭代的范围
{
cout<<m<<endl;
}
return 0;
}
运行程序输出:
1
2
3
4
迭代时也可以通过引用来改变元素的值,也可以通过auto更为方便的定义迭代变量:
#include <iostream>
using namespace std;
int main(){
int a[] = {1, 2, 3, 4};
for(auto& m : a) //通过引用迭代元素
{
m *= 2; //对元素进行修改
}
for(auto m : a)
{
cout<<m<<endl;
}
return 0;
}
运行程序输出:
2
4
6
8
需要指出的是,使用基于范围的for,有两点基本的要求
1.必须有明确的范围,单纯的指针没有范围,因此无法使用。
2.必须实现了++和==操作符。
#include <iostream>
using namespace std;
void f(int a[]) //参数a实际上是指针类型