C++;和for/in(?)循环 我对C++有点生疏了(仍然)。右侧的“getChildren()”函数是否会在每个循环中调用 for (Node* node : this->m_stage->getChildren()) { }
另一方面,这种循环的名称是什么 它是从c++11引入的。而C++;和for/in(?)循环 我对C++有点生疏了(仍然)。右侧的“getChildren()”函数是否会在每个循环中调用 for (Node* node : this->m_stage->getChildren()) { },c++,C++,另一方面,这种循环的名称是什么 它是从c++11引入的。而this->m_stage->getChildren()将只计算一次 语法 attr(可选)(范围声明:范围表达式)循环语句 上述语法生成与以下(uu)范围等效的代码, __开始和结束仅用于展示): 这是一个基于范围的循环。否,右侧的表达式只计算一次 更详细地说,形式为(tx:expr)body的循环大致相当于以下循环标准: { auto && c : expr; for (auto it = begin(
this->m_stage->getChildren()
将只计算一次
语法attr(可选)(范围声明:范围表达式)循环语句
上述语法生成与以下(uu)范围等效的代码,
__开始和结束仅用于展示):
这是一个基于范围的循环。否,右侧的表达式只计算一次
更详细地说,形式为(tx:expr)body
的循环大致相当于以下循环标准:
{
auto && c : expr;
for (auto it = begin(c), e = end(c); it != e; ++it)
{
T x = *it;
body
}
}
特别是,这意味着范围表达式(expr
在我的示例中)可以是右值(由函数调用创建的临时值)。请注意,范围表达式也可以是数组或大括号列表。这称为基于范围的for循环。您的循环大致相当于:
{
auto && __range = this->m_stage->GetChildren() ;
for (auto __begin = begin(__range),
__end = end(__range);
__begin != __end; ++__begin) {
Node* node = *__begin;
}
}
<> >你可以看到,<代码> Gebug子>代码>只调用一次。什么阻止你尝试它?我可以试试,但是我能假设它会和C++和编译器的每一种味道都一样吗?至少它会显示出你的侧重点,所以,回答评论,在某些情况下仍然更快。“强尼:非常,非常伤心。
{
auto && __range = this->m_stage->GetChildren() ;
for (auto __begin = begin(__range),
__end = end(__range);
__begin != __end; ++__begin) {
Node* node = *__begin;
}
}