std::move 用法详解
时间: 2023-10-16 21:10:58 浏览: 86
C++11 并发指南之std::thread 详解
std::move 是 C++11 中的一个函数模板,它用于将一个对象转移到另一个对象,通常用于移动语义中。移动语义是一种优化机制,它可以避免不必要的复制操作,提高程序的性能。
std::move 的用法如下:
```c++
template<class T>
typename std::remove_reference<T>::type&& move(T&& arg);
```
其中,T&& arg 表示一个右值引用,而 typename std::remove_reference<T>::type&& 表示一个右值引用类型。该函数模板接受一个对象 arg,并返回其右值引用,表示该对象可以被移动。
使用 std::move 可以将一个对象从一个位置移动到另一个位置,例如:
```c++
std::vector<int> v1 = {1, 2, 3};
std::vector<int> v2 = std::move(v1); // 移动 v1 到 v2
```
在上面的例子中,v1 和 v2 都是 std::vector<int> 类型的对象。使用 std::move 将 v1 移动到 v2,实现了 v1 内部资源的转移,避免了不必要的复制操作。
需要注意的是,使用 std::move 之后,原对象的状态是未定义的,不能再使用该对象。因此,通常在移动之后,要重新设置原对象的状态,例如:
```c++
std::vector<int> v1 = {1, 2, 3};
std::vector<int> v2 = std::move(v1); // 移动 v1 到 v2
v1.clear(); // 重新设置 v1 的状态
```
阅读全文