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);
Run Code Online (Sandbox Code Playgroud)
没有标准uninitialized_move
算法.这是疏忽还是设计?
如果是设计,理由是什么?
R. *_*des 26
你可以获得uninitialized_move
with uninitialized_copy
和移动迭代器的效果:
std::uninitialized_copy(std::make_move_iterator(first),
std::make_move_iterator(last),
out);
Run Code Online (Sandbox Code Playgroud)
std::move
虽然它也可以通过std::copy
并移动迭代器来实现,因为委员会预计它的使用频繁,并决定将其作为便利功能[1] [2].