copy_n
copy_n (정해진 개수만큼 복사)
소스 범위에서 지정한 개수만큼의 원소를 목적지로 복사하는 알고리즘이에요. <algorithm> 헤더, C++11부터.
출처: cppreference
본문
copy_n은 count가 양수이면 소스 범위 [first, std::next(first, count))의 원소를 목적지 [d_first, std::next(d_first, count))로 복사해요. count가 0 이하면 아무 일도 하지 않아요.
template< class InputIt, class Size, class OutputIt >
OutputIt copy_n( InputIt first, Size count, OutputIt d_first ); // (1)
Size는 정수 계열 타입이에요.- 소스와 목적지 범위는 겹칠 수 있지만, 그러면 결과 순서가 예측 불가능해져요.
- C++17부터 실행 정책 오버로드가 추가됐어요.
template< class ExecutionPolicy,
class ForwardIt1, class Size, class ForwardIt2 >
ForwardIt2 copy_n( ExecutionPolicy&& policy,
ForwardIt1 first, Size count, ForwardIt2 d_first ); // (2)
반환 값은 count가 양수면 d_first + count, 아니면 d_first예요. 복잡도는 count가 양수일 때 count번 대입이에요.
copy와 달리 "범위 끝" 대신 "개수"로 복사량을 지정해요.
std::vector<int> src{10, 20, 30, 40, 50};
std::vector<int> dst(3);
std::copy_n(src.begin(), 3, dst.begin()); // 10,20,30 복사
전체 범위를 모르거나 앞의 N개만 가져와야 할 때 유용해요. std::string이나 배열 등의 고정 부분 복사에도 자주 쓰여요.