我有一个类有一个 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/