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