我有一个返回容器的函数。我们只需将其称为“Container
”。
Container GenerateRandomContainer() { ... }
此函数将生成一个容器,其中包含每个调用不同的随机元素。
当我使用for each循环遍历此容器时,如下所示:
for(Element e : GenerateRandomContainer()) { ... }
每次迭代会生成一个新的Container
,还是在输入每个循环时只生成一个?
答案 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)
它只会生成一个容器,然后循环将遍历生成的元素。