Iterator Safety

반복자 위치·유효성

begin()end()는 범위를 만들고, 컨테이너 수정은 그 범위를 가리키던 반복자를 무효화할 수 있습니다.

범위 규칙begin은 첫 요소, end는 마지막 다음 위치입니다.
수정 규칙삽입과 삭제 뒤에는 들고 있던 반복자가 아직 유효한지 확인합니다.
category

가능한 이동이 다릅니다

입력, 전진, 양방향, 임의 접근 반복자는 지원하는 연산과 알고리즘이 다릅니다.

const

수정 의도를 드러냅니다

const_iterator는 원소를 읽기만 할 때 사용해 실수로 값을 바꾸지 않게 합니다.

adapter

방향을 바꿀 수 있습니다

역방향 반복자와 삽입 반복자는 알고리즘 호출 방식을 컨테이너에 맞춥니다.

vector재할당이 일어나면 기존 반복자와 참조가 대부분 무효화됩니다.
list삽입은 안정적이고 삭제된 원소를 가리키던 반복자만 사라집니다.
map/set삽입은 기존 반복자를 유지하고 삭제된 원소의 반복자만 무효화됩니다.

반복자 수명 반복자는 포인터처럼 보이지만 컨테이너의 구조 변화에 의존하므로, 수정 뒤 재사용 여부를 항상 다시 판단합니다.