• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

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

    履歴 編集

    function template
    <algorithm>

    std::copy_n

    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

    処理系

    参照