더북(TheBook)

각 반복자 카테고리는 iterator 템플릿에 타입 인수로 사용된 빈 클래스, 즉 반복자 태그 클래스(iterator tag class)로 확인할 수 있다. 반복자 태그 클래스의 유일한 목적은 특정 반복자 타입이 무엇을 할 수 있는지 지정하고 iterator 템플릿 타입 인수로 사용하는 것이다. 표준 반복자 태그 클래스는 다음과 같다.

input_iterator_tag

output_iterator_tag

forward_iterator_taginput_iterator_tag에서 파생되었다

bidirectional_iterator_tagforward_iterator_tag에서 파생되었다

random_access_iterator_tagbidirectional_iterator_tag에서 파생되었다

반복자 태그 클래스의 상속 구조는 반복자 카테고리를 누적하는 형태로 되어 있다. iterator 템플릿 인스턴스가 생성되면 첫 번째 템플릿 타입 인수는 반복자 태그 클래스 중에 하나가 되고, 이에 따라 반복자의 기능이 정해진다. 2장에서는 반복자를 직접 정의하고 카테고리를 지정하는 방법을 설명한다.

알고리즘에 지정된 카테고리의 반복자가 필요하다면 하위 반복자를 쓸 수 없다. 항상 상위 반복자를 써야 한다. 순방향, 양방향, 랜덤 액세스 반복자는 참조를 만드는 반복자를 역참조하는지, const 참조를 만드는 반복자를 역참조하는지에 따라 변경 가능(mutable)이나 변경 불가(constant)가 된다. 할당의 왼쪽 식에 const 반복자를 역참조한 결과는 사용할 수 없다.

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