Sté*_*ane 21 c++ foreach for-loop c++11
鉴于此C++ 11示例代码:
for ( const auto &foo : bar() )
{
// ... do something with foo...
}
Run Code Online (Sandbox Code Playgroud)
标准是否保证bar()
本例中的表达式仅被评估一次?
或者它最终会在循环的每次迭代中被调用?
Mat*_*Mat 26
它只评估一次.标准说基于范围的for循环等价于:
§6.5.4 基于范围的语句 [stmt.ranged]
{
auto && __range = range-init;
for ( auto __begin = begin-expr,
__end = end-expr;
__begin != __end;
++__begin ) {
for-range-declaration = *__begin;
statement
}
}
Run Code Online (Sandbox Code Playgroud)
以range-init
等同于( bar() )
你的情况(您指定的表达,用括号包围).如您所见,该表达式仅进行一次评估.
归档时间: |
|
查看次数: |
1906 次 |
最近记录: |