iterator

범주는 가능한 연산의 단계다

반복자 범주를 보면 어떤 이동과 알고리즘 호출이 가능한지 판단할 수 있다.

input/output한 방향 입출력
forward여러 번 순회
bidirectional앞뒤 이동
random access거리 계산과 +n
구분판단 기준다음 행동
input/output한 번 지나가며 읽거나 쓴다stream, output iterator
forward같은 범위를 다시 순회할 수 있다forward_list 기준
bidirectional앞뒤로 한 칸씩 이동한다list, map/set
random access거리 계산, 인덱스 이동, 정렬 가능vector, deque

핵심 알고리즘이 요구하는 반복자 범주보다 컨테이너가 약하면 호출 자체가 성립하지 않는다.