iterator
범주는 가능한 연산의 단계다
반복자 범주를 보면 어떤 이동과 알고리즘 호출이 가능한지 판단할 수 있다.
input/output한 방향 입출력
forward여러 번 순회
bidirectional앞뒤 이동
random access거리 계산과 +n
| 구분 | 판단 기준 | 다음 행동 |
|---|---|---|
| input/output | 한 번 지나가며 읽거나 쓴다 | stream, output iterator |
| forward | 같은 범위를 다시 순회할 수 있다 | forward_list 기준 |
| bidirectional | 앞뒤로 한 칸씩 이동한다 | list, map/set |
| random access | 거리 계산, 인덱스 이동, 정렬 가능 | vector, deque |
핵심 알고리즘이 요구하는 반복자 범주보다 컨테이너가 약하면 호출 자체가 성립하지 않는다.