gpt4 book ai didi

c++ - 是否每个循环都会评估基于 C++11 范围的 for 循环条件?

转载 作者:IT老高 更新时间:2023-10-28 13:59:30 25 4
gpt4 key购买 nike

for(auto& entity : memoryManager.getItems()) entity->update(mFrameTime);

如果 memoryManager 包含 1000 个项目,memoryManager.getItems()在循环开始时被调用 1000 次还是只调用一次?

编译器是否使用 -O2(或 -O3)运行任何优化?

( memoryManager.getItems() 返回 std::vector<Entity*>& )

最佳答案

它只被评估一次。该标准将基于范围的 for 语句定义为:

{
auto && __range = range-init;
for ( auto __begin = begin-expr, __end = end-expr; __begin != __end; ++__begin ) {
for-range-declaration = *__begin;
statement
}
}

其中 range-init:

之后的表达式(用括号括起来)或花括号初始化列表

关于c++ - 是否每个循环都会评估基于 C++11 范围的 for 循环条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15766020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com