C++ · ITERATOR
반복자 무효화 규칙
반복자는 컨테이너 내부 저장 위치를 가리키므로 삽입, 삭제, 재할당 후 계속 쓸 수 있는지 컨테이너마다 다릅니다.
반복자 무효화 구조
invalidation
vector
reallocation 시 대부분 무효화
deque
끝/중간 조작별 규칙 차이 큼
list
삭제된 원소 반복자만 무효화
map/set
삽입 안정, 삭제 원소만 위험
vector
→
deque
→
list
→
map/set
반복자 무효화 기준
점검
reserve
vector는 미리 용량을 잡아 재할당 위험을 줄입니다.
erase 반환값
삭제 후 다음 반복자는 erase의 반환값으로 이어갑니다.
참조도 확인
iterator뿐 아니라 reference와 pointer 생존 여부도 봐야 합니다.
루프 수정
순회 중 삽입/삭제는 컨테이너 규칙에 맞춰 루프를 다시 짭니다.