> 백엔드 개발 > C++ > 엄격한 약한 순서를 구현하는 방법`

엄격한 약한 순서를 구현하는 방법`

Linda Hamilton
풀어 주다: 2024-12-24 01:47:12
원래의
886명이 탐색했습니다.

How to Implement a Strict Weak Ordering `

연산자를 정의하는 방법< 엄격한 약한 순서 지정을 위한 n-튜플

소개

엄격한 약한 순서 지정은 두 개체 간의 관계를 정의하는 수학적 개념입니다. 이는 객체 x와 y가 동일하면 f(x, y)와 f(y, x)가 모두 false임을 지정합니다. a가 b보다 작으면 f(a, b)는 참이고 f(b, a)는 거짓입니다.

n-튜플에 대한 정의

n-튜플의 경우 연산자< 다음 조건에 따라 엄격한 약한 순서를 충족하도록 정의할 수 있습니다.

  • 동등성: 두 n-튜플은 모든 구성 요소가 동일하면 동일합니다.
  • 보다 작음: a의 구성 요소 중 하나라도 다음보다 작으면 n-튜플 a는 다른 n-튜플 b보다 작습니다. b의 해당 구성요소.

구현

위 정의는 다음 단계를 사용하여 C에서 구현할 수 있습니다.

  1. 조건에 따라 동등하면 false를 반환하고 미만이면 true를 반환하는 비교 함수를 만듭니다.
  2. < 비교 함수를 사용하는 연산자.

3-튜플의 경우 연산자< 다음과 같이 정의할 수 있습니다.

struct Triple {
    int x;
    int y;
    int z;
    bool operator<(const Triple& other) const {
        return (x < other.x) || (y < other.y) || (z < other.z);
    }
};
로그인 후 복사

이 정의를 사용하면 두 개의 트리플이 x, y 및 z에 대해 동일한 값을 갖는 경우 동일합니다. 트리플의 구성 요소 중 하나라도 다른 트리플의 구성 요소보다 작으면 트리플은 다른 트리플보다 작은 것으로 간주됩니다.

std::tuple

또는 std:: C 표준 라이브러리에서 제공하는 튜플 클래스는 이미 튜플에 대한 엄격한 약한 순서를 구현합니다. 이를 활용하려면 튜플에 포함된 개체를 복사하지 않고 튜플을 사용할 수 있습니다.

struct S {
    int a;
    int b;
};
bool operator<(const S& lhs, const S& rhs) {
    return std::tie(lhs.a, lhs.b) < std::tie(rhs.a, rhs.b);
}
로그인 후 복사

위 내용은 엄격한 약한 순서를 구현하는 방법`의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿