每次循环都执行每个循环的语句吗?

时间:2017-06-28 01:35:51

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

我有一个返回容器的函数。我们只需将其称为“Container”。

Container GenerateRandomContainer() { ... }

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

当我使用for each循环遍历此容器时,如下所示:

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

每次迭代会生成一个新的Container,还是在输入每个循环时只生成一个?

2 个答案:

答案 0 :(得分:4)

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只会生成一次,并迭代它的所有元素。

答案 1 :(得分:0)

它只会生成一个容器,然后循环将遍历生成的元素。

相关问题