더북(TheBook)

전역 함수 begin(), end()가 배열 원소들을 나열하는 데 쓰일 반복자를 반환하는 데도 쓰이고, 함수 인수로도 쓰였다. for 루프에 사용된 반복자는 원소들의 값을 목록으로 보여주는 데 사용되었다. *iter 표현은 반복자를 역참조해서 참조에 의한 값에 접근한다. 물론 for 루프 본체에서 iter를 증가하는 것도 가능하다.

for (auto iter = std::begin(data); iter != std::end(data);)
std::cout << *iter++ << " ";
 

보통은 컨테이너 헤더 파일에 iterator가 포함되어 있으므로 iterator 헤더를 포함하는 include 지시자는 생략할 수 있다. accumulate() 함수가 정의된 numeric 헤더도 include 지시자로 선언한다. accumulate() 함수는 두 인수로 지정된 범위에 있는 원소들의 합계를 반환한다. 인수로 지정되는 반복자는 첫 번째와 마지막 원소에서 하나 지난 위치까지 범위로 지정할 수 있다. 세 번째 인수는 합계에 사용할 초깃값을 지정한다. accumulate() 함수는 범위로 지정된 원소들이 덧셈을 지원하는 타입이어야 동작한다. 마찬가지로 operator+()를 정의한 클래스 타입의 객체들과도 동작한다.

Note ≣

accumulate()를 컨테이너와 사용하다 보면 알게 되겠지만, accumulate() 함수 템플릿에는 두 원소 사이에 기본 연산 +를 적용하는 대신 다른 이항 연산을 지정할 수 있는 버전도 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.