我有一个返回容器的函数。我们就叫它' Container
'吧。
Container GenerateRandomContainer() { ... }
此函数将生成一个容器,其中包含每次调用都不同的随机元素。
当我使用 for each 循环遍历这个容器时,如下所示:
for(Element e : GenerateRandomContainer()) { ... }
它会在每次迭代中生成一个新Container
的,还是在进入 for each 循环时只生成一个?
我有一个返回容器的函数。我们就叫它' Container
'吧。
Container GenerateRandomContainer() { ... }
此函数将生成一个容器,其中包含每次调用都不同的随机元素。
当我使用 for each 循环遍历这个容器时,如下所示:
for(Element e : GenerateRandomContainer()) { ... }
它会在每次迭代中生成一个新Container
的,还是在进入 for each 循环时只生成一个?
基于范围的 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_expression
将GenerateRandomContainer()
用于您的代码);这意味着Container
将只生成一次,并迭代它的所有元素。
它只会生成一次容器,然后循环将遍历生成的元素。