std::equivalence_relation
std::equivalence_relation (동치 관계 개념)
관계 R이 그 인자들에 대해 동치 관계(equivalence relation)를 부과하는지를 명세하는 개념(concept)이에요. C++20부터 있어요.
출처: cppreference
본문
<concepts> 헤더에 정의돼 있어요.
template< class R, class T, class U >
concept equivalence_relation = std::relation<R, T, U>;
개념 equivalence_relation<R, T, U>는 관계 R이 그 인자들에 동치 관계를 부과함을 명세해요.
의미 요구사항
관계 r은 다음이면 동치 관계예요.
- 반사적(reflexive): 모든
x에 대해r(x, x)가 참. - 대칭적(symmetric): 모든
a와b에 대해r(a, b)가 참인 것과r(b, a)가 참인 것이 서로 필요충분. - 추이적(transitive):
r(a, b) && r(b, c)이면r(a, c).
참고
relation과 equivalence_relation의 구분은 순전히 의미적(semantic)이에요. 타입 수준 요구사항은 동일하지만, 동치 관계는 인자들 간의 그룹화(분할)를 정의하는 수학적 성질을 요구해요. 정렬·탐색 알고리즘에서 동치 클래스를 정의하는 데 쓰여요.
참고 문헌
- C++23 표준 (ISO/IEC 14882:2024): 18.7.6 Concept equivalence_relation [concept.equiv]
- C++20 표준 (ISO/IEC 14882:2020): 18.7.6 Concept equivalence_relation [concept.equiv]