我知道这个循环是如何工作的,以及如何在实际问题中使用它.但我想知道引擎盖下发生了什么.我认为这个循环类似于常规for循环,例如
for(int i = 0 ; i < 5 ; i ++){
// instructions
}
Run Code Online (Sandbox Code Playgroud)
变量i只初始化一次,所以我认为这对基于范围的循环来说是相同的.但是,如果我例如编写此代码:
for(const int x : vec) {
cout << x << endl;
}
Run Code Online (Sandbox Code Playgroud)
编译器允许我这样做,但我不明白这是如何可能的.如果变量x是const,那么每次迭代的x价值是如何变化的?
Bri*_*ian 12
循环的每次迭代都会创建一个局部变量x并将其初始化为下一个元素vec.当循环迭代结束时,x超出范围.x永远不会修改单个.
有关精确的语义,请参见http://en.cppreference.com/w/cpp/language/range-for.
| 归档时间: |
|
| 查看次数: |
1684 次 |
| 最近记录: |