2

我有一个返回容器的函数。我们就叫它' Container'吧。

Container GenerateRandomContainer() { ... }

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

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

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

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

4

2 回答 2

4

基于范围的 for 循环等效如下:

{
    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_expressionGenerateRandomContainer()用于您的代码);这意味着Container将只生成一次,并迭代它的所有元素。

于 2017-06-28T01:39:38.493 回答
0

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

于 2017-06-28T01:48:59.447 回答