알고리즘은 컨테이너가 아니라 반복자 범위를 처리한다

컨테이너는 원소를 소유하고, 반복자는 범위를 노출하며, 알고리즘은 그 범위에 대해 정렬·검색·복사 같은 작업을 수행합니다.

Container

데이터를 저장합니다. 알고리즘은 컨테이너 타입 자체보다 시작/끝 반복자를 받습니다.

std::vector<int> v{5,2,8,1};
Iterator Range

[first, last) 범위입니다. end()는 마지막 원소 다음을 가리킵니다.

v.begin(), v.end()
Algorithm

반복자 범위를 받아 실제 작업을 수행합니다. 반환값은 다음 처리 위치가 되기도 합니다.

std::sort(v.begin(), v.end());
비수정
findcountfor_each

읽거나 찾지만 원소 배치는 바꾸지 않습니다.

수정
copytransformremove

결과를 다른 위치에 쓰거나 원소 배치를 바꿉니다.

정렬/수치
sortmin_elementaccumulate

반복자 능력과 헤더가 맞아야 호출됩니다.

핵심: 알고리즘을 부를 때는 함수 이름보다 먼저 “어떤 반복자 범위를 넘기는가?”를 확인합니다.