비교형 개요

참고: Qt의 비교형은 C++20 표준과 동등한 기능을 제공합니다. 비교 타입이 존재하는 유일한 이유는 C++17 빌드에서도 해당 기능을 사용할 수 있도록 하기 위해서입니다. C++20 빌드에서는 암시적으로 std 유형으로 변환하여 완전히 상호 교환할 수 있습니다. 따라서 이미 프로젝트에서 C++20을 사용할 수 있다면 코드에서 C++ 표준 유형을 사용하는 것이 좋습니다. Qt 비교형은 Qt 7에서 제거될 예정입니다.

Qt는 0 리터럴과 비교할 수 있는 3방향 비교를 위한 몇 가지 비교 유형을 제공합니다. 이러한 비교 유형을 사용하려면 <QtCompare> 헤더를 포함시켜야 합니다. 이러한 비교 유형은 요소의 배열이나 순위를 설명하는 데 사용되는 수학적 개념인 순서에 따라 분류됩니다. 다음과 같은 카테고리가 제공됩니다:

C++ 유형Qt 유형stricttotal예제
std::strong_orderingQt::strong_orderingyesyes정수형, 대소문자를 구분하는 문자열, QDate, QTime
std::weak_orderingQt::weak_orderingnoyes대소문자를 구분하지 않는 문자열, 정렬되지 않은 연관 컨테이너, QDateTime
std::partial_orderingQt::partial_orderingnono부동 소수점 타입, QOperatingSystemVersion, QVariant

가장 강력한 비교 유형인 Qt::strong_ordering 은 엄격한 전체 순서를 나타냅니다. 이는 동등성이 대체 가능성을 의미하는 방식으로 두 요소를 비교할 수 있어야 합니다. 즉, 동등한 값은 서로 구별할 수 없습니다. 실제적인 예로 두 문자열의 대소문자 구분 비교를 들 수 있습니다. 예를 들어 "Qt""Qt" 값을 비교할 때 결과는 Qt::strong_ordering::equal 입니다. 두 값은 구별할 수 없으며 이 값에 대해 수행되는 모든 결정론적 연산은 동일한 결과를 산출합니다.

Qt::weak_ordering 는 총 순서를 나타냅니다. 두 값은 여전히 비교 가능해야 하지만, 동등한 값은 구별할 수 있습니다. 여기서 일반적인 예는 대소문자를 구분하지 않는 두 문자열의 비교입니다. 예를 들어 "Qt""qt" 값을 비교할 때 둘 다 같은 문자를 가지고 있지만 다른 표현을 사용합니다. 이 비교에서는 Qt::weak_ordering::equivalent 이 되지만 실제로는 Equal 이 되지 않습니다. 또 다른 예는 QDateTime 으로, 현지 시간 또는 UTC를 포함한 다른 표준 시간대로 주어진 순간을 나타낼 수 있습니다. time()date() 은 서로 다를 수 있지만 서로 다른 표현은 동일합니다.

Qt::partial_ordering 는 이름에서 알 수 있듯이 부분 순서를 나타냅니다. 두 값이 비교할 수 없는 상태( unordered )가 될 수 있는 가능성을 허용합니다. 또한 동등한 값은 여전히 구별할 수 있습니다. 실제적인 예로 두 개의 부동소수점 값을 비교하는 경우를 들 수 있는데, NaN(Not-a-Number)과 비교하면 순서가 지정되지 않은 결과가 나옵니다. 또 다른 예는 두 개의 QOperatingSystemVersion 객체를 비교하는 것입니다. Android와 Windows와 같이 서로 다른 두 운영 체제의 버전을 비교하면 순서가 지정되지 않은 결과가 생성됩니다.

이러한 비교 유형을 활용하면 관계 정의의 표현력이 향상됩니다. 또한 C++17에서 3방향 비교를 구현하기 위한 기본 구성 요소로 사용됩니다.

Qt::strong_ordering, Qt::weak_ordering, Qt::partial_ordering참조하세요 .

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.