알고리즘은 컨테이너가 아니라 반복자 범위를 처리한다
컨테이너는 원소를 소유하고, 반복자는 범위를 노출하며, 알고리즘은 그 범위에 대해 정렬·검색·복사 같은 작업을 수행합니다.
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
반복자 능력과 헤더가 맞아야 호출됩니다.
핵심: 알고리즘을 부를 때는 함수 이름보다 먼저 “어떤 반복자 범위를 넘기는가?”를 확인합니다.