是否有移动范围的算法?

fre*_*low 5 c++ stl c++11

在C++ 98中,我可以使用std::copy算法复制范围.

std::copy(source.begin(), source.end(), destination.begin());
Run Code Online (Sandbox Code Playgroud)

C++ 0x中是否存在将元素从源移动到目标的算法?或者std::copy以某种方式重载以接受像rvalue迭代器之类的东西 - 是否有这样的事情?

该算法可能如下所示:

#include <utility>

template<class InputIterator, class OutputIterator>
OutputIterator mooove(InputIterator first, InputIterator last, OutputIterator result)
{
    for (; first != last; ++first, ++last) *result = std::move(*first);
    return result;
}
Run Code Online (Sandbox Code Playgroud)

ziy*_*iya 5

它似乎是最新的草案(见第25.3.2节).

我有一个C++ 03的硬拷贝,它与C++ 98(第25.2.x节)完全相同,你可以看到相同的算法(显然没有'移动').