카테고리 확인
알고리즘이 요구하는 iterator category가 컨테이너 반복자와 맞는지 본다.
sort는 random accessSTL 반복자는 포인터처럼 보이지만 컨테이너와 알고리즘 사이의 계약이다. 가능한 연산, 무효화 조건, 정렬 알고리즘의 요구 범위를 함께 읽어야 한다.
알고리즘이 요구하는 iterator category가 컨테이너 반복자와 맞는지 본다.
sort는 random accessbegin은 포함, end는 제외인 반열린 구간으로 전달한다.
off-by-one 방지insert, erase, push_back 후 기존 iterator가 살아 있는지 컨테이너별로 확인한다.
무효화 핵심list에는 list::sort처럼 컨테이너 전용 알고리즘이 필요한 경우가 있다.
std::sort 불가for (auto it = v.begin(); it != v.end(); )
if (pred(*it)) it = v.erase(it);
else ++it;