范围for语句的语法形式是:
for(declaration:expression) statementexpression表示的必须是一个序列,比如用花括号括起来的初始值列表,数组或者vector或string等类型的对象,这些类型的共同特点是拥有能返回迭代器的begin和end成员。
declaration定义一个变量,序列中的每个元素都得能转换成该变量的类型。确保类型相容的最好办法是使用auto类型说明符,这个关键字可以领编译器帮助我们指定合适的类型。如果需要对序列中的元素执行写操作,循环变量必须声明称引用类型。
每次迭代都会重新定义循环控制变量,并将其初始化成序列中的下一个值,之后才会执行statement。
例子:
vector<int> v={0,1,2,3,4,5,6,7,8,9} //范围变量必须是引用类型,只有才能进行读写操作 for(auto &r : v) //对于v中每一个元素 r*=2; //将v中每一个元素的值翻倍