要在自定义类型中使用移动算法,需要在元素中提供移动赋值运算符,移动赋值运算符和std::move()详见《c++高级编程》第9章
class mystring { public: string mstr; mystring(){} mystring(const string &str) :mstr(str){} mystring& operator=(mystring&& rhs)//<span style="font-size:18px;">移动赋值运算符</span> { if (this == &rhs) return *this; mstr = std::move(rhs.mstr); return *this; } };
vector<int> n = {-3,9,-6,3,8,7 }; vector<mystring> sfrom = { mystring("a"), mystring("b"), mystring("c") }; vector<mystring> sto(3); move(sfrom.begin(), sfrom.end(), sto.begin());//<span style="font-size:18px;">移动算法</span> for (auto &t : sto) cout << t.mstr << "\t"; cout << endl; for (auto &t : sfrom) cout << t.mstr << "\t"; cout << endl;
原文地址:http://blog.csdn.net/bupt8846/article/details/44460069