Algorithm Choice

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

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

1. 범위

[begin, end)가 맞는가?

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

2. 반복자

알고리즘이 요구하는 이동 능력은?

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

3. 데이터 변화

값만 바꾸는가, 크기도 줄이는가?

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

4. 비교 규칙

타입이 필요한 연산을 제공하는가?

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

읽기 find, count_if, for_each

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

변환 copy, transform, accumulate

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

재배치 sort, remove, erase

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