我有一个返回容器的函数。我们就称它为“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
只会生成一次,并迭代其中的所有元素。