구간 생성
시작은 포함하고 끝은 제외하는 [first, last) 규칙으로 빈 구간을 자연스럽게 표현한다.
iterator는 포인터처럼 보이지만 컨테이너마다 가능한 이동과 무효화 규칙이 다르다. begin/end 반열림 구간과 카테고리를 함께 읽어야 한다.
시작은 포함하고 끝은 제외하는 [first, last) 규칙으로 빈 구간을 자연스럽게 표현한다.
sort처럼 random access를 요구하는 알고리즘에는 list iterator를 넘길 수 없다.
erase, insert, push_back 이후 기존 iterator가 살아 있는지 컨테이너별 규칙을 본다.
for (auto it = items.begin(); it != items.end(); ) {
if (it->expired()) it = items.erase(it);
else ++it;
}