gpt4 book ai didi

c++ - 在 for-each 循环中使用 getter 是否效率低下?

转载 作者:太空狗 更新时间:2023-10-29 23:50:35 33 4
gpt4 key购买 nike

最近我在我的代码中做了以下事情:

for(auto& item : something.getSomeVector())

当我开始我的优化过程时,我开始怀疑这是否比下面这样的方法效率低:

std::vector<Type> vTypes = something.getSomeVector();
for(auto& item : vTypes)

for-each 循环会复制 vector 还是继续调用该函数?

谢谢!

最佳答案

基于范围的循环的定义是您的代码在一个 block 内扩展为与此非常相似的内容:

auto && __range = something.getSomeVector();
auto __begin = begin(__range);
auto __end = end(__range);

for (; __begin != __end; ++__begin)
{
auto &item = *__begin;

如您所见,它已经是最优的,您建议的改进甚至可能使事情变得更糟(如果函数通过引用返回,那么您在之前没有创建的地方创建了一个拷贝)。

关于c++ - 在 for-each 循环中使用 getter 是否效率低下?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28824297/

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