Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个类,它有一个向量成员变量,我填写如下:
class Foo { vector<int> v; void g() { vector<int> w; // fill w v = w; } };
我的问题:临时向量 w 可能会变得很大,我不想付出复制构建的代价。我应该在这里使用 std::swap 而不是复制吗?我的理解是 std::swap 由于向量的专门化(它只会交换指向堆的指针)而更有效。
是的,你应该在这里交换。在 C++11 中,你也可以说v = std::move(w);.
v = std::move(w);
无论哪种方式,变量w都会立即超出范围,因此它的内容无关紧要,您最好转移所有权而不是复制。
w