C ++ 11标准库包括以下相关算法:
template <class InputIterator, class ForwardIterator>
ForwardIterator uninitialized_copy(InputIterator first, InputIterator last,
ForwardIterator result);
template <class ForwardIterator, class T>
void uninitialized_fill(ForwardIterator first, ForwardIterator last,
const T& x);
template<class InputIterator, class OutputIterator>
OutputIterator copy(InputIterator first, InputIterator last,
OutputIterator result);
template<class ForwardIterator, class T>
void fill(ForwardIterator first, ForwardIterator last, const T& value);
template<class InputIterator, class OutputIterator>
OutputIterator move(InputIterator first, InputIterator last,
OutputIterator result);
没有标准uninitialized_move
算法。这是疏忽还是设计?
如果是设计原因,理由是什么?
答案 0 :(得分:26)
您可以使用uninitialized_move
获得uninitialized_copy
的效果并移动迭代器:
std::uninitialized_copy(std::make_move_iterator(first),
std::make_move_iterator(last),
out);
std::move
即使它也可以用std::copy
实现并移动迭代器,因为委员会预计它会频繁使用并决定将其作为便利函数[1] { {3}}