c++ - 在 STL 容器内转移所有权?

标签 c++ stl ownership

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

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

有拼接功能的列表是可以的。 对于整个 vector ,这在恒定时间内也应该是可能的。

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

最佳答案

查看 std::swap

vector<T> v1; 
// fill v1

vector<T> v2;

swap(v1, v2);
OR
v2.swap(v1);

Swap Reference

关于c++ - 在 STL 容器内转移所有权?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1465970/

相关文章:

c++ - 完美的一对

c++ - 处理 std::stack 中的大量项目

rust - Entry::Occupied.get() 返回一个引用当前函数拥有的数据的值,即使 hashmap 应该拥有所有权

c# - 是否可以在 gsoap 的单独线程中执行函数?

c++ - 是否允许函数参数常量不匹配?

c++ - 这个 C++ 程序中发生了什么?

android - 如何使用自定义 Makefile 为 Android 编译 STL C++?

string - 在 Rust 中将 Vec<String> 转换为 &str 的一部分?

pointers - 指向 Result<Vec<f64>, _> 中向量第一个元素的指针已损坏

c++ - 对象被其他对象引用时const限定符的微妙问题