STL에서는 iterator의 category를 알고 사용하는 것이 매우 중요한데 그 이유는 category 별로 사용할 수 있는 generic algorithm 이 다르기 때문이다. 예를 들어 list<>의 내용을 generic algorithm인 sort() 를 사용하여 정렬할 수 없는데 그 이유는 sort()는 random access iterator만 parameter로 입력 받을 수 있기 때문이다. STL의 Iterator는 수행 가능한 operator에 따라 다음과 같이 분류된다. category operator input = *p, ++ output *p =, ++ forward *p =, = *p, ++ bidirectional *p =, = *p, ++, -- random access *p =, = *p, ++, --, +, -, [] STL의 Container 각각이 가지고 있는 iterator의 category는 다음과 같다. container category array, vector, deque, string random access list bidirectional Generic algorithm이 요구하는 iterator의 category는 다음과 같다. generic algorithm category find(), advance() input reverse() bidirectional sort() random access list container의 경우 bidirectional iterator를 지원하기 때문에 generic sort() 를 사용 할 수 없다. 대신 list의 경우는 sort()를 직접 지원한다. 직접 만든 Container를 generic algorithm 에서 사용할 수 있도록 하기 위해서는 이러한 iterator의 특...