c++ - 通过保留和复制,还是通过创建和交换来复制 vector 更有效?

标签 c++ algorithm vector stl

我正在尝试有效地制作 vector 的拷贝。我看到了两种可能的方法:

std::vector<int> copyVecFast1(const std::vector<int>& original)
{
  std::vector<int> newVec;
  newVec.reserve(original.size());
  std::copy(original.begin(), original.end(), std::back_inserter(newVec));
  return newVec;
}

std::vector<int> copyVecFast2(std::vector<int>& original)
{
  std::vector<int> newVec;
  newVec.swap(original);
  return newVec;
}

哪些是首选,为什么?我正在寻找能够避免不必要的复制的最有效的解决方案。

最佳答案

但它们不一样,是吗? 一个是拷贝,另一个是交换。因此函数名称。

我最喜欢的是:

a = b;

其中 ab 是 vector 。

关于c++ - 通过保留和复制,还是通过创建和交换来复制 vector 更有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/644673/

相关文章:

c++ - 拦截Windows中的Move命令

c++ - C++:如何从k = 2 ^ a * b中找到a和b?

c++ - 使用 reference_wrappers 初始化 vector

c++ - 通过move高效地将元组插入到容器中

c++ - CMake编译导致错误

c++ - SIMD 减少 4 个 vector 而没有 hadd

java - 了解 Java 中合并排序算法的关键操作计数

algorithm - 给定数组的多少排列导致 BST 的高度为 2?

c++ - Eigen在ios项目中的使用

C++ Deque/Vector 将项目推到前面而不是 push_back