STL은 저장소, 이동 규칙, 처리 함수를 분리한다
컨테이너가 데이터를 담고, 반복자가 범위를 노출하며, 알고리즘은 반복자 범위에 대해 동작합니다. 이 분리 덕분에 같은 알고리즘을 여러 컨테이너에 적용할 수 있습니다.
1. Container
데이터를 저장합니다. vector, list, map처럼 저장 방식과 비용이 다릅니다.
2. Iterator
begin()과 end()로 순회 범위를 만듭니다. 알고리즘은 컨테이너 내부를 직접 알 필요가 없습니다.
3. Algorithm
sort, find, copy가 반복자 범위를 처리합니다. 자료구조와 처리 로직이 분리됩니다.
같은 알고리즘, 다른 저장소
반복자 범위가 연결 지점입니다.
std::sort(v.begin(), v.end());
std::find(list.begin(), list.end(), x);
std::copy(src.begin(), src.end(), out);
이번 절에서 보는 대상
저장소를 고르는 기준이 성능의 출발점입니다.
sequence
ordered associative
unordered associative
adapter
컨테이너를 고른다는 것은 “어떻게 저장하고, 어떤 반복자와 비용을 줄 것인가”를 먼저 정하는 일입니다.