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): 모든 ab에 대해 r(a, b)가 참인 것과 r(b, a)가 참인 것이 서로 필요충분.
  • 추이적(transitive): r(a, b) && r(b, c)이면 r(a, c).

참고

relationequivalence_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]

더 알아보기 (Learn more)

cppreference