- algorithm[meta header]
- std[meta namespace]
- function template[meta id-type]
- cpp11[meta cpp]
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"));
}
- std::copy_n[color ff0000]
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
- Clang: 3.0 [mark verified]
- GCC: 4.4.7 [mark verified]
- Visual C++: 2010 [mark verified], 2012 [mark verified], 2013 [mark verified], 2015 [mark verified]