더북(TheBook)

컨테이너가 갖는 반복자의 특징은 컨테이너 타입에 따라 결정된다. 예를 들어 vectordeque 컨테이너는 랜덤 액세스 반복자를 갖는다. 이들 컨테이너는 원소들에 랜덤하게 접근할 수 있어야 하기 때문이다. 반면에 listmap 컨테이너는 항상 양방향 반복자를 제공한다. 이들 컨테이너는 원소들에 랜덤하게 접근할 필요가 없기 때문이다. 알고리즘에는 최소 기능 수준만 반영하므로 알고리즘 타입에는 입력, 출력, 순방향 반복자 타입이 일반적으로 사용된다. 이 책에서는 알고리즘을 컨테이너 내부에서 적용하는 예제를 보여주면서 반복자에 대해 더 깊이 설명할 것이다(이렇게 하는 편이 실무 관점에서 훨씬 더 이해하기 쉽다). 일단, 여기서는 배열에서 반복자를 어떻게 사용하는지 간단한 예제로 살펴보자.

// Ex1_01.cpp
// 반복자 사용하기
#include <numeric>          // accumulate() 함수 - 범위에 속한 원소들의 합계
#include <iostream>         // 표준 스트림
#include <iterator>         // 반복자, begin(), end() 함수
 
int main()
{
    double data[] {2.5, 4.56.55.58.5};
    std::cout << "배열 원소들:\n";
    for (auto iter = std::begin(data); iter != std::end(data); ++iter)
        std::cout << *iter << " ";
    auto total = std::accumulate(std::begin(data), std::end(data), 0.0);
    std::cout << "\n배열 원소들의 합계: " << total std::endl;
}
 
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.