Compare
는 표준 라이브러리 기능 중 일부가 사용자 제공 함수 객체 타입으로부터 기대하는 요구 사항들의 집합입니다.
Compare
를 만족하는 타입의 객체에 함수 호출 연산을 적용한 반환 값은
변환
되어
bool
일 때, 호출의 첫 번째 인수가 이 타입에 의해 유도된
엄격한 약순서 관계
에서 두 번째 인수보다 앞에 나타나면
true
를, 그렇지 않으면
false
를 반환합니다.
모든
BinaryPredicate
과 마찬가지로, 해당 표현식의 평가는 역참조된 반복자를 통해 비-const 함수를 호출해서는 안 되며, 구문적으로 함수 호출 연산은
const
객체 인자를 수용해야 하며, 인자가
const
인지 비-
const
인지에 관계없이 동일한 동작을 보여야 합니다.
목차
요구사항
타입
T
가 다음 조건을 만족하면
Compare
를 만족합니다
주어진
comp
,
T
타입의 객체,
equiv
(
a, b
)
,
표현식-동등
관계인
!
comp
(
a, b
)
&&
!
comp
(
b, a
)
.
다음 표현식들은 유효해야 하며 지정된 효과를 가져야 합니다:
표현식
반환 타입
요구 사항
comp
(
a, b
)
다음 속성을 갖는
엄격한 약순서
관계를 설정:
모든
a
에 대해
comp
(
a, a
)
==
false
.
만약
comp
(
a, b
)
==
true
이면
comp
(
b, a
)
==
false
.
만약
comp
(
a, b
)
==
true
이고
comp
(
b, c
)
==
true
이면
comp
(
a, c
)
==
true
.
equiv
(
a, b
)
bool
다음 속성을 갖는
동치 관계
를 설정:
모든
a
에 대해
equiv
(
a, a
)
==
true
.
만약
equiv
(
a, b
)
==
true
이면,
equiv
(
b, a
)
==
true
.
만약
equiv
(
a, b
)
==
true
이고
equiv
(
b, c
)
==
true
이면,
equiv
(
a, c
)
==
true
.
참고:
comp
는
strict total ordering
을
equiv
에 의해 결정된 동치 클래스들에 유도합니다.
표준 라이브러리
다음 표준 라이브러리 기능은 Compare 유형을 필요로 합니다.
키로 정렬된 고유 키의 컬렉션 (클래스 템플릿)
키로 정렬된 키-값 쌍의 컬렉션, 키는 고유함 (클래스 템플릿)
키로 정렬된 키의 컬렉션 (클래스 템플릿)
키로 정렬된 키-값 쌍의 컬렉션 (클래스 템플릿)
우선순위 큐를 제공하기 위해 컨테이너를 적응시킵니다 (클래스 템플릿)
요소 범위를 정렬합니다(함수 템플릿 & 알고리즘 함수 객체)
요소들을 정렬합니다 (의 공개 멤버 함수 std::forward_list<T,Allocator>)
요소들을 정렬합니다 (의 공개 멤버 함수 std::list<T,Allocator>)
동등한 요소 간의 상대적 순서를 유지하면서 요소 범위를 정렬합니다(함수 템플릿 & 알고리즘 함수 객체)
범위의 처음 N개 요소를 정렬합니다(함수 템플릿 & 알고리즘 함수 객체)
요소 범위를 복사하고 부분적으로 정렬합니다(함수 템플릿 & 알고리즘 함수 객체)
범위가 정렬되었는지 확인합니다(함수 템플릿 & 알고리즘 함수 객체)
가장 큰 정렬된 하위 범위를 찾습니다(함수 템플릿 & 알고리즘 함수 객체)
범위가 정렬되었다면 N번째 요소를 찾습니다(함수 템플릿 & 알고리즘 함수 객체)
이진 탐색을 사용하여 주어진 값보다 작지 않은 첫 번째 요소를 찾습니다(함수 템플릿 & 알고리즘 함수 객체)
이진 탐색을 사용하여 주어진 값보다 큰 첫 번째 요소를 찾습니다(함수 템플릿 & 알고리즘 함수 객체)
이진 탐색을 사용하여 요소가 범위에 존재하는지 확인합니다(함수 템플릿 & 알고리즘 함수 객체)
이진 탐색을 사용하여 주어진 값과 일치하는 요소의 범위를 찾습니다(함수 템플릿 & 알고리즘 함수 객체)
두 개의 정렬된 범위를 병합합니다(함수 템플릿 & 알고리즘 함수 객체)
두 개의 정렬된 리스트를 병합합니다 (의 공개 멤버 함수 std::forward_list<T,Allocator>)
두 개의 정렬된 리스트를 병합합니다 (의 공개 멤버 함수 std::list<T,Allocator>)
두 개의 정렬된 범위를 제자리에서 병합합니다(함수 템플릿 & 알고리즘 함수 객체)
한 시퀀스가 다른 시퀀스의 부분 시퀀스인지 확인합니다(함수 템플릿 & 알고리즘 함수 객체)
두 집합 간의 차집합을 계산합니다(함수 템플릿 & 알고리즘 함수 객체)
두 집합의 교집합을 계산합니다(함수 템플릿 & 알고리즘 함수 객체)
두 집합 간의 대칭 차집합을 계산합니다(함수 템플릿 & 알고리즘 함수 객체)
두 집합의 합집합을 계산합니다(함수 템플릿 & 알고리즘 함수 객체)
최대 힙에 요소를 추가합니다(함수 템플릿 & 알고리즘 함수 객체)
최대 힙에서 가장 큰 요소를 제거합니다(함수 템플릿 & 알고리즘 함수 객체)
요소 범위로 최대 힙을 만듭니다(함수 템플릿 & 알고리즘 함수 객체)
최대 힙을 오름차순으로 정렬된 요소 범위로 변환합니다(함수 템플릿 & 알고리즘 함수 객체)
주어진 범위가 최대 힙인지 확인합니다(함수 템플릿 & 알고리즘 함수 객체)
최대 힙인 가장 큰 하위 범위를 찾습니다(함수 템플릿 & 알고리즘 함수 객체)
주어진 값 중 더 큰 값을 반환합니다(함수 템플릿 & 알고리즘 함수 객체)
범위에서 가장 큰 요소를 반환합니다(함수 템플릿 & 알고리즘 함수 객체)
주어진 값 중 더 작은 값을 반환합니다(함수 템플릿 & 알고리즘 함수 객체)
범위에서 가장 작은 요소를 반환합니다(함수 템플릿 & 알고리즘 함수 객체)
두 요소 중 더 작은 값과 더 큰 값을 반환합니다(함수 템플릿 & 알고리즘 함수 객체)
범위에서 가장 작은 요소와 가장 큰 요소를 반환합니다(함수 템플릿 & 알고리즘 함수 객체)
두 범위를 사전식으로 비교합니다(함수 템플릿 & 알고리즘 함수 객체)
요소 범위의 다음으로 큰 사전식 순열을 생성합니다(함수 템플릿 & 알고리즘 함수 객체)
요소 범위의 다음으로 작은 사전식 순열을 생성합니다(함수 템플릿 & 알고리즘 함수 객체)
결함 보고서
다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
DR
적용 대상
게시된 동작
올바른 동작
LWG 2114
(
P2167R3
)
C++98
반환 타입의 문맥적 변환 가능성이
bool
으로
구현체들의 실제 관행을 반영하지 않음
요구사항 수정됨
LWG 3031
C++98
const
값에 대한 요구사항이 불충분함
요구사항 강화됨
참고 항목
relation
이 엄격한 약순서(strict weak ordering)를 부과함을 명시
(concept)
비교 연산자
<
,
<=
,
>
,
>=
,
==
,
!=
, 및
<=>
(C++20)
, 인수들을 비교