泛型算法(十六)之移动语义算法
1、move(InputIterator first, InputIterator last, OutputIterator result):C11版,把输入序列中的逐个元素移动到结果序列。需要注意的是,把一个对象移动给另一个对象的std::move定义在头文件<utility>中。
std::vector<int> c = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<int> result; result.resize(10); //把c中元素逐个移动到result中 std::move(c.begin(), c.end(), result.begin()); //输出 for (auto var : result) { std::cout << var << ","; } //打印结果:0,1,2,3,4,5,6,7,8,9,
2、move_backward(BidirectionalIterator1 first, BidirectionalIterator1 last, BidirectionalIterator2 result):C11版,把输入序列中的逐个元素自尾到头移动到结果序列。
std::vector<int> c = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; std::vector<int> result; result.resize(10); //把序列c中的逐个元素自尾到头移动到序列result std::move_backward(c.begin(), c.end(), result.end()); //输出 for (auto var : result) { std::cout << var << ","; } //打印结果:0,1,2,3,4,5,6,7,8,9,