gpt4 book ai didi

c++ - C++ 中返回对象集合的函数

转载 作者:太空狗 更新时间:2023-10-29 23:45:54 24 4
gpt4 key购买 nike

在我当前的项目中,我需要实现相当多的函数/方法,这些函数/方法采用一些参数并生成一组结果(相当大)。所以为了在不复制的情况下返回这个集合,我可以创建一个新集合并返回一个智能指针:

boost::shared_ptr<std::vector<Stuff> > generate();

或者引用一个将被填充的 vector :

void generate(std::vector<Stuff> &output);

这两种方法都有好处。第一个清楚地表明 vector 是函数的输出,在并行场景等中使用它是微不足道的。第二个在循环中调用时可能更有效(因为我们不是每次都分配内存),但是那么参数是输出并不那么明显,需要有人从 vector 中清除旧数据...

哪个在现实生活中更常见(即什么是最佳实践)?在 C#/java 中,我会争论第一个问题,在 C++ 中是什么情况?

此外,是否可以使用 C++11 有效地按值返回 vector ?会有什么陷阱?

最佳答案

首先做正确性,然后必要时进行优化

通过移动语义和返回值优化共同使普通函数结果不可复制,您可能必须对其进行处理以使其效率低到值得进行优化工作

因此,只需将集合作为函数结果返回,如果您觉得它太慢,则MEASURE

关于c++ - C++ 中返回对象集合的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15004242/

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