범위 구성
begin은 포함, end는 제외인 반열린 구간을 유지한다.
[first,last)반복자는 단순 포인터처럼 보이지만 가능한 이동 방향과 연산이 정해진 계약이다. 알고리즘이 요구하는 iterator category와 컨테이너의 무효화 규칙이 맞아야 안전하다.
begin은 포함, end는 제외인 반열린 구간을 유지한다.
[first,last)std::sort처럼 random access가 필요한 알고리즘인지 확인한다.
list에는 부적합컨테이너 수정 뒤 기존 iterator를 계속 써도 되는지 문서 규칙을 따른다.
무효화 검사iterator와 const_iterator, iterator to const의 차이를 구분한다.
수정 가능성for (auto it = v.begin(); it != v.end(); ) {
if (pred(*it)) it = v.erase(it);
else ++it;
}