gpt4 book ai didi

C++11 基于范围的 for() 循环评估一次或多次?

转载 作者:IT老高 更新时间:2023-10-28 21:51:51 27 4
gpt4 key购买 nike

鉴于此 C++11 示例代码:

for ( const auto &foo : bar() )
{
// ... do something with foo...
}

本例中的表达式bar()是否保证只计算一次?

或者它最终会在循环的每次迭代中被调用吗?

最佳答案

它只被评估一次。标准说基于范围的 for 循环等价于:

§6.5.4 基于范围的 for 语句 [stmt.ranged]

{
auto && __range = range-init;
for ( auto __begin = begin-expr,
__end = end-expr;
__begin != __end;
++__begin ) {
for-range-declaration = *__begin;
statement
}
}

range-init 在您的情况下等同于 ( bar() ) (您指定的表达式,用括号括起来)。如您所见,该表达式仅计算一次。

关于C++11 基于范围的 for() 循环评估一次或多次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16259574/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com