STL的移动算法

时间:2023-03-09 08:43:57
STL的移动算法

要在自己定义类型中使用移动算法。须要在元素中提供移动赋值运算符。移动赋值运算符和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;