알고리즘 계약

알고리즘 호출 계약

STL 알고리즘은 컨테이너를 직접 알지 않고 반복자 범위, 조건 함수, 출력 반복자를 통해 동작합니다.

입력 범위[first, last)가 유효하고 같은 컨테이너 안의 순서인지 확인합니다.
결과 위치복사와 변환은 쓸 공간이나 삽입 반복자가 필요합니다.
range

범위 고정

beginend가 알고리즘이 읽을 정확한 구간을 만듭니다.

predicate

조건은 순수하게 둡니다

정렬 비교나 검색 조건은 같은 입력에 일관된 결과를 반환해야 합니다.

erase

컨테이너 크기는 따로 줄입니다

remove는 원소를 밀어 놓을 뿐이므로 실제 삭제에는 erase가 필요합니다.

헤더대부분은 <algorithm>, 누적 계산은 <numeric>에 있습니다.
반복자 등급sort는 임의 접근 반복자가 필요해 list에는 바로 못 씁니다.
성능선형, 로그, 정렬 비용을 데이터 크기와 함께 읽습니다.

상태 전달 알고리즘은 “컨테이너에 붙은 함수”가 아니라 반복자와 호출 가능한 객체로 조립하는 독립 함수입니다.