gpt4 book ai didi

C++ vector : should I copy or swap?

转载 作者:太空狗 更新时间:2023-10-29 19:42:09 26 4
gpt4 key购买 nike

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com