c++从入门到放弃(四)语句

173 阅读1分钟

4.1 范围for语句

for( declaration : expression )
    statement;
	expression:
				必须是一个序列,比如用话括号括起来的初始值列表,数组,或者vector,string
				等共同特点是拥有能返回迭代器的begin和end成员
	declaration:
				定义一个变量,序列中的每个元素都得转换成该变量的类型。
//每次迭代都会重新定义循环控制变量,并将其初始化成序列中的下一个值,之后才会执行statement
vector<int> v={0,1,2,3};
for(auto &r:v)
    r*=2;
//准备修改元素则定义为引用类型
//等价于
for(auto beg=v.begin(),end=v.end;
   beg!=end;++beg)
{
    auto& r=*beg;
    r*=2;
}
//在范围for中预存了end()的值,一旦在序列中添加(删除)元素,就会出错