c++ - 返回+重置成员变量的最有效方法?

标签 c++ c++11 copy move-semantics

下面实现GetDeleteObjects的最有效方法是什么?

class Foo {
public:
  std::vector<Bar> GetDeleteObjects();
private:
  std::vector<Bar> objects_;
}

std::vector<Bar> Foo::GetDeleteObjects() {
  std::vector<Bar> result = objects_;
  objects_.clear();
  return result;
}

目前,至少执行了从 objects_ 到 result 的复制。例如,可以使用 std::move 来加快速度吗?

最佳答案

你可以交换 vector :

std::vector<Bar>
Foo::GetDeleteObjects() {
  std::vector<Bar> result;
  result.swap(objects_);
  return result;
}

关于c++ - 返回+重置成员变量的最有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34284953/

相关文章:

c++ - C++ Google Mock 指南提到的依赖注入(inject)

c++ - 多线程 curl 同时处理多个连接

c++ - std::unique_ptr 不是零成本

c++ - MSVC10 Visual Studio 2010 是否支持基于 C++ 范围的循环

.net - .NET 中的 System.String.Copy 有什么用?

c - 在c中复制.exe文件和文本文件的区别

c++ - 如何强制编译器选择特定的函数特化

c++ - 使用 make_shared 防止复制构造

c++ - 如何使用 lambda 表达式作为模板参数?

python - 在 Python 中复制嵌套列表