每个循环中的语句是否在每次迭代中执行?
Is statement in for each loop executed each iteration?
我有一个函数,其中 returns 一个容器。我们就称它为“Container
”吧。
Container GenerateRandomContainer() { ... }
此函数将生成一个容器,其中包含每次调用都不同的随机元素。
当我像这样使用 for each 循环遍历此容器时:
for(Element e : GenerateRandomContainer()) { ... }
它会在每次迭代中生成一个新的 Container
还是在进入 for each 循环时只生成一个?
{
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
只会生成一次,并迭代它的所有元素。
它只会生成一次容器,然后循环遍历生成的元素。
我有一个函数,其中 returns 一个容器。我们就称它为“Container
”吧。
Container GenerateRandomContainer() { ... }
此函数将生成一个容器,其中包含每次调用都不同的随机元素。
当我像这样使用 for each 循环遍历此容器时:
for(Element e : GenerateRandomContainer()) { ... }
它会在每次迭代中生成一个新的 Container
还是在进入 for each 循环时只生成一个?
{
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
只会生成一次,并迭代它的所有元素。
它只会生成一次容器,然后循环遍历生成的元素。