最終更新日時(UTC):
が更新

履歴 編集

function template
<algorithm>

std::copy_n(C++11)

namespace std {
  template <class InputIterator, class Size, class OutputIterator>
  OutputIterator
    copy_n(InputIterator first,
           Size n,
           OutputIterator result);   // (1) C++11

  template <class InputIterator, class Size, class OutputIterator>
  constexpr OutputIterator
    copy_n(InputIterator first,
           Size n,
           OutputIterator result);   // (1) C++20

  template <class ExecutionPolicy, class ForwardIterator1, class Size,
            class ForwardIterator2>
  ForwardIterator2
    copy_n(ExecutionPolicy&& exec,
           ForwardIterator1 first,
           Size n,
           ForwardIterator2 result); // (2) C++17
}

概要

イテレータ範囲[first, first + n) (範囲の先頭N個) の要素をコピーする。

効果

0 以上 n 未満であるそれぞれの i について、*(result + i) = *(first + i) を行う。

戻り値

result + n

計算量

正確に n 回代入が行われる。

#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>

int main() {
  std::vector<int> v = { 3, 1, 5, 2, 4 };
  std::copy_n(v.begin(), 5, std::ostream_iterator<int>(std::cout, "\n"));
}

出力

3
1
5
2
4

実装例

template<class InputIterator, class Size, class OutputIterator>
OutputIterator copy_n(InputIterator first, Size n, OutputIterator result) {
  for (Size i = 0; i < n; i++)
    *result++ = *first++;
  return result;
}

バージョン

言語

  • C++11

処理系

参照