12

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算法。这是疏忽还是设计使然?

如果是设计使然,原理是什么?

4

1 回答 1

26

您可以获得uninitialized_movewithuninitialized_copy和 move 迭代器的效果:

std::uninitialized_copy(std::make_move_iterator(first),
                        std::make_move_iterator(last),
                        out);

std::move尽管它也可以使用std::copy和移动迭代器来实现,但它仍然存在,因为委员会预计它的使用会很频繁,并决定将它作为一种便利功能[1] [2]提供。

于 2012-09-20T19:18:55.047 回答