C++11新标准引入了一种更简单的for语句,这种语句可以遍历容器或者其他序列的所有元素。范围for语句的语法形式是:
for( declaration : expression)
statement
expression表示的必须是一个序列,序列中的每个元素都能转换成该变量的类型。确保该类型相容最简单的方法就是使用auto类型说明符,这个关键字可以令编译器帮助我们指定合适的类型。如果需要对序列中的元素执行写操作,循环变量必须声明成引用类型。
每次迭代都会重新定义循环控制变量,并将其初始化成序列中的下一个值,之后才会执行statement。
示例:
vector<int> v = {,,,,,}; // 范围变量必须是引用类型,这样才能对元素执行写操作
for( auto &r : v )
r *= ;