더북(TheBook)

1.5 | 반복자에 쓰이는 연산

 

iterator 헤더에는 반복자에 쓰이는 연산을 정의한 네 가지 함수 템플릿이 정의되어 있다.

advance()는 첫 번째 인수로 받은 반복자를 두 번째 인수로 지정한 숫자만큼 증가시킨다. 첫 번째 인수에는 입력 반복자 기능을 갖고 있는 반복자라면 어떤 것이든 쓸 수 있다. 두 번째 인수는 첫 번째 인수에 지정된 반복자가 양방향 반복자 또는 랜덤 액세스 반복자일 때 반복자를 감소시키는 음수도 지정할 수 있다. 반환값은 없다.

int data[]{1, 2, 3, 4, 5, 6};
auto iter = std::begin(data);
std::advance(iter, 3);
std::cout << "네 번째 원소: " << *iter << std::endl;

distance()는 두 반복자가 지정한 범위에 있는 원소들의 개수를 반환한다.

int data[] {1, 2, 3, 4, 5, 6};
std::cout << "data에 있는 원소의 개수: "
          << std::distance(std::begin(data), std::end(data)) << std::endl;

next()는 첫 번째 인수로 받은 반복자를 두 번째 인수로 지정한 숫자만큼 증가시킨 반복자를 반환한다. 첫 번째 인수에는 순방향 반복자 기능이 있는 반복자만 지정할 수 있다. 두 번째 인수는 기본값이 1로 지정되어 있다.

int data[]{ 1, 2, 3, 4, 5, 6 };
auto iter = std::begin(data);
auto fourth = std::next(iter, 3);
std::cout << "첫 번째 원소: " << *iter << " 그리고 네 번째 원소: " << *fourth << std::endl;
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.