如何正确地从函数返回向量以避免额外的复制?
How should I properly return a vector from a function to avoid extra copying?
我应该如何正确地返回一个向量从一个函数到一个无效的额外复制?
如果我只返回一个向量,那么我应该在函数中创建一个向量然后在返回时,它会被复制到结果中。但我想避免这种情况。然后我想我应该在堆上创建向量并返回指向它的指针向量* ?
谢谢
c++标准允许编译器在某些情况下消除此复制(第12.8.5节)。很难判断编译器是否真的做到了这一点,因此您应该阅读它的文档或查看生成的汇编代码。所以最好让你的编译器为你做优化。
但如果你真的喜欢手工优化(你不应该),请继续阅读。
在堆上分配vector并返回指向它的指针是一件不好的事情,因为在这种情况下,不清楚谁对该对象负责,谁将进行内存清理。
我将把一个引用作为参数传递给它。
void foo(std::vector& bas)
{
// do code here
}
相关文章:
- 如何正确地将分支添加到已存在的树中
- 如何正确地将带有指针的数组传递给函数
- 如何正确地推回然后遍历堆中对象的向量?
- 我是否不正确地集中了这些字符数组?
- 如何通过另一个对象中的命令正确地从一个对象返回数据
- 我怎样才能通过友谊正确地履行我的职能?
- C++:如何正确地将 deque::front() 返回的变量从函数中传递出去?
- 我应该如何正确地将packaged_task移动到 lambda?
- 如何正确地将SHA1CryptoServiceProvider转换为c ++?
- 如何正确地对 constexpr 函数进行单元测试
- 我的动态链接队列在同一输出流中调用时不正确地输出三个返回函数
- 如何正确地将boost::asio::buffers_iterator转换为InputIterator
- 如何正确地检查变量char中包含的字母
- 当试图交换可变模板类时,如何正确地重载operator=
- 如何正确地将 boost::optional<std::chrono::d uration> 作为函数参数?
- 如何在C++中正确地将我的语言字符输出到HTML文件中
- 如何正确地从运算符构造函数内部调用复制构造函数
- 如何正确地将值从数组复制到向量
- 如何正确地从函数返回向量以避免额外的复制?
- 当传递给函数时,如何正确地将一个字符数组的内容复制到另一个字符数组,而不使用STL