1.用法
std::move用来指示对象t可以“被移动”, 即允许从t到另一种对象的高效率的转换
效果就是static_cast强转的作用。通过把左值的数据转换成右值,如果push_back,之后就可以直接传递指针。
2.官方例子
#include <iostream>
#include <utility>
#include <vector>
#include <string>
int main()
{
std::string str = "Hello";
std::vector<std::string> v;
// 使用 push_back(const T&) 重载,
// 表示我们将带来复制 str 的成本
v.push_back(str);
std::cout << "After copy, str is \"" << str << "\"\n";
// 使用右值引用 push_back(T&&) 重载,
// 表示不复制字符串;而是
// str 的内容被移动进 vector
// 这个开销比较低,但也意味着 str 现在可能为空。
v.push_back(std::move(str));
std::cout << "After move, str is \"" << str << "\"\n";
std::cout << "The contents of the vector are \"" << v[0]
<< "\", \"" << v[1] << "\"\n";
}
3. 我的例子
#include<iostream>
#include<string>
#include<vector>
#include<utility>
//定义自己的move
namespace csstd{
/*define remove_reference overload*/
template<typename _Tp>
struct remove_reference
{typedef