在STL容器内转让所有权?

Łuk*_*Lew 5 c++ stl ownership

是否可以将矢量内容的所有权从一个向量转移到另一个向量?

vector<T> v1; 
// fill v1
vector<T> v2 = OvertakeContents(v1);
// now v1 would be empty and v2 would have all the contents of v1
Run Code Online (Sandbox Code Playgroud)

具有拼接功能的列表是可能的.对于整个矢量,这应该在恒定时间内是可能的.

如果不是那么为什么不呢?

RC.*_*RC. 10

看看std :: swap

vector<T> v1; 
// fill v1

vector<T> v2;

swap(v1, v2);
OR
v2.swap(v1);
Run Code Online (Sandbox Code Playgroud)

交换参考


Fre*_*son 10

std :: vector有一个swap()函数,它的工作方式非常类似.

vector<T> v2;
v2.swap(v1);
Run Code Online (Sandbox Code Playgroud)