Algorithm preflight

STL 알고리즘 선택 전 점검표

알고리즘 이름만 보고 고르지 말고, 반복자 능력과 부작용을 먼저 맞추면 템플릿 오류와 논리 버그를 줄일 수 있습니다.

3 필수 확인
I

반복자 요구 조건

sort는 임의 접근 반복자, find는 입력 반복자만 있어도 됩니다.

E

컨테이너 변화 여부

remove는 크기를 줄이지 않으므로 erase와 함께 확인합니다.

T

타입 연산 가능성

비교, 대입, 이동 가능성은 사용자 정의 타입에서 특히 중요합니다.

반복자별 대표 선택

입력

find, count, for_each처럼 한 번 읽는 작업

순방향

remove, replace처럼 결과 위치를 유지하는 작업

임의 접근

sort, binary_search처럼 위치 계산이 필요한 작업

실수 방지 규칙

헤더 먼저 algorithm, numeric, functional을 용도에 맞게 포함
범위 확인 first부터 last 직전까지만 처리되는지 점검
비교자 일관성 정렬 비교자는 엄격한 약한 순서를 만족해야 함
무효화 확인 컨테이너 수정 후 반복자를 계속 써도 되는지 확인

erase-remove 관용구 흐름

1. 조건 선택 remove_if에 제거 조건 전달
2. 유효 구간 이동 남길 요소를 앞쪽으로 재배치
3. 새 끝 반복자 논리적 끝 위치를 반환
4. 실제 삭제 erase(newEnd, end)로 크기 축소