알고리즘 선택 기준

알고리즘은 이름보다 요구 조건으로 고릅니다

범위, 반복자 카테고리, 컨테이너 크기 변화, 비교 가능성을 함께 확인하면 STL 알고리즘의 의도를 더 안전하게 읽을 수 있습니다.

1. 범위

[begin, end) 범위 확인

end()는 마지막 다음 위치이므로, 실제 처리 대상이 어디까지인지 먼저 고정합니다.

2. 반복자

알고리즘 요구 이동 능력

sort는 임의 접근 반복자가 필요하고, list는 멤버 sort를 사용합니다.

3. 데이터 변화

값 변경과 크기 축소 구분

remove는 요소를 앞으로 모을 뿐이므로 실제 삭제는 erase가 마무리합니다.

4. 비교 규칙

타입 연산 제공 여부

사용자 정의 타입은 ==, <, 비교 함수, 람다 중 필요한 약속을 준비합니다.

읽기 find, count_if, for_each

컨테이너를 바꾸지 않고 조건 확인, 검색, 집계를 수행합니다.

변환 copy, transform, accumulate

출력 범위 크기와 초기값이 결과 의미를 결정합니다.

재배치 sort, remove, erase

순서와 크기가 달라질 수 있으므로 반복자 무효화까지 함께 봅니다.