c++ - 每个循环中的语句是否在每次迭代中执行?

标签 c++ c++11 foreach containers ranged-loops

<分区>

我有一个返回容器的函数。我们就称它为“Container”吧。

Container GenerateRandomContainer() { ... }

此函数将生成一个容器,其中包含每次调用都不同的随机元素。

当我像这样使用 for each 循环遍历此容器时:

for(Element e : GenerateRandomContainer()) { ... }

它会在每次迭代时生成一个新的 Container 还是在进入 for each 循环时只生成一个?

最佳答案

range-based for loop等同于:

{
    auto && __range = range_expression ; 
    auto __begin = begin_expr ;
    auto __end = end_expr ;
    for ( ; __begin != __end; ++__begin) { 
        range_declaration = *__begin; 
        loop_statement 
    } 
} 

请注意第一个语句 auto && __range = range_expression ;(range_expression 将是 GenerateRandomContainer() 您的代码);这意味着 Container 只会生成一次,并迭代其中的所有元素。

关于c++ - 每个循环中的语句是否在每次迭代中执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44792341/

相关文章:

javascript - angularjs 循环逻辑,forEach

mysql - 循环遍历数组以取消设置已知值并内爆到 sql

C++ 从属常量

c++ - 错误 : no matching function for call to 'variable'

c++ - 可以检查 NULL 取消引用的调试软件?

c++ - 为什么 pjmedia_snd_port_create(...) 初始化声音端口失败?

c++ - 力扣#15 : 3sum -- avoiding duplicate

c++ - 传递 std::type_info 来识别 void *

c++ - 是否存在类似于 std::string 的类型(即保存任意长度的数据 block ),但不使用 null 终止符?

c# - 为什么我不能在 foreach 循环中设置迭代变量的属性?