破译 C 11 基于范围的循环的内部工作原理
C 11 基于范围的循环的神秘操作让许多程序员摸不着头脑头。了解这些循环在底层如何运作可以揭示它们的机制。
在典型的 for 循环中,如下图所示,循环变量(例如 i)仅初始化一次:
<code class="cpp">for (int i = 0; i < 5; i++) { // Instructions }</code>
类似的理解最初可能适用于基于范围的循环,其中变量(例如 x)绑定到范围中的每个元素:
<code class="cpp">for (const int x : vec) { cout << x << endl; }</code>
但是,范围中允许常量变量如上所示,基于 -的循环违背了这一概念。当 x 的值在每次迭代中似乎发生变化时,x 如何保持不变?
答案在于基于范围的循环的隐藏机制。对于每次迭代,都会声明一个单独的局部变量 x,并使用 vec 中的下一个元素进行初始化。当迭代结束时,x 超出范围。至关重要的是,同一个 x 永远不会被修改。这种微妙的实现无缝地管理了变化的 x 的外观,同时保持其不变的性质。
要更深入地了解基于范围的循环的精确语义,请参阅答案中提供的资源。
以上是C 11 基于范围的循环内部如何工作?的详细内容。更多信息请关注PHP中文网其他相关文章!