C++ vector : should I copy or swap?

标签 c++ copy swap stdvector

我有一个类有一个 vector 成员变量,我填写如下:

class Foo {
vector<int> v;
void g() {
  vector<int> w;
  // fill w
  v = w;
}

};

我的问题:临时 vector w 可以变得很大,我不想付出代价 复制 build 。我应该在这里使用 std::swap 而不是复制吗?我的理解 是 std::swap 由于 vector 的专门化(它在哪里 只会交换指向堆的指针)。

最佳答案

是的,你应该在这里交换。在 C++11 中,您还可以说 v = std::move(w);

无论哪种方式,变量 w 都会立即超出范围,因此它的内容并不重要,您最好转移所有权而不是复制。

关于C++ vector : should I copy or swap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11247481/

相关文章:

c++ - 无法在控制台上看到内存泄漏

C++ 复制多维 vector

c# - 在 C# 中的快捷方式后面复制文件

java - 如何在 Java 中交换字符串字符?

python - 为什么我的交换列表的两个元素的代码出错了?

c++ - 在没有 #including 其库的情况下使用 swap()?

c++ - 将参数传递给 std::thread 包装器

C++数组作为指针问题

c# - 如何将对象列表从 C++ 传递到 C#?

Objective-C 复制并保留