< 출처 >
- 강의명
C++ 코딩테스트 완전 정복 : 입문부터 실전 모의고사까지
- 목차
3-2 배열 [49:25]
< 내용 >
#include <algorithm>에 정의된 STL 함수
copy(시작위치, 끝위치, 목적지);
시작부터 끝까지 복사해서 목적지에 보낸다.
아래의 경우, vec에 있는 모든 값을 출력하기 위한 C++ STL 방식.
// 1
copy(vec.begin(), vec.end(), std::ostream_iterator<int>(cout, " "));
// 2
for (int i = 0; i < vec.size(); i++)
{
cout << vec[i] << " ";
}
- vec.begin(), vec.end()
vec 벡터의 처음부터 끝까지 반복자(iterator)를 의미하므로,
즉, vec의 모든 요소를 대상으로 한다는 뜻.
- std::ostream_iterator<int>(cout, " ")
ostream_iterator 이것은 출력 스트림에 값을 하나씩 출력할 수 있는 반복자(iterator).
int형 요소들을 cout으로 각 요소 사이에 " "(공백)을 넣어서 출력하겠다는 의미.
ostream_iterator은 cout 같은 출력장치에 "반복자처럼" 하나씩 데이터를 넘겨주는 역할.
STL 알고리즘들은 데이터 범위를 반복자(iterator)*로 다룬다고 한다.
그래서 copy() 같은 함수도 출력 스트림에 데이터를 보내기 위해 반복자 형태로 받아야 한다고 한다.
그래서 ostream_iterator는 cout을 출력 반복자로 포장하였다.
생성자 인자 별 설명을 덧붙이자면,
cout : 데이터를 어디에 출력할지 지정 (여기서는 콘솔창)
" " : 각 출력 데이터 사이에 넣을 구분자 (여기서는 공백 한 칸)
다시 정리하면, cout에 int 값을 출력하는 출력 반복자이며, 각 값 사이에 공백을 출력한다
'C++ > 알고리즘(Algorithm)' 카테고리의 다른 글
C++/1부터 N까지 합계 (0) | 2025.06.11 |
---|---|
C++/자료형 유효 범위 확인, 콜라츠 추측 (0) | 2025.06.10 |
C++/max_element (0) | 2025.06.10 |
C++/모듈러 연산-반복 패턴 처리 (0) | 2025.06.10 |
C++/STL-Map, Key값이 아닌 Value값으로 정렬 (0) | 2025.06.02 |