iterator rules

반복자는 컨테이너와 알고리즘 사이의 공통 커서다

*iterator, ++iterator, const_iterator, iterator invalidation은 순회 문법과 안전 조건을 묶습니다.

begin/end

반복자 범위 쌍

end()는 실제 원소가 아니라 순회 종료를 나타내는 경계입니다.

역참조

iterator 접근과 이동

잘못된 위치를 역참조하면 정의되지 않은 동작이 될 수 있습니다.

const_iterator

const 순회

읽기 전용 알고리즘에서 실수로 값을 수정하는 일을 막습니다.

무효화

반복자 무효화 조건

수정 연산 뒤에는 반환 반복자나 새 범위를 사용합니다.

범주 입력, 순방향, 양방향, 임의 접근 반복자는 가능한 연산이 다릅니다.
알고리즘 std::sort는 임의 접근 반복자를 요구하므로 list에는 바로 쓸 수 없습니다.
어댑터 istream_iterator와 ostream_iterator는 스트림도 반복자처럼 다루게 합니다.