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::movestd::copy委員会は、その使用が頻繁に行われると予想し、便利な関数として提供することを決定したため、 および move イテレータを使用して実装することもできますが、存在します[1] [2]

于 2012-09-20T19:18:55.047 に答える