Übersicht über Vergleichstypen
Hinweis: Die Vergleichstypenvon Qt bieten Funktionen, die ihren Entsprechungen im C++20-Standard entsprechen. Der einzige Grund für ihre Existenz besteht darin, diese Funktionen auch in C++17-Builds verfügbar zu machen. In einer C++20-Umgebung werden sie implizit in die „ std “-Typen konvertiert und umgekehrt, wodurch sie vollständig austauschbar sind. Wir empfehlen daher, in Ihrem Code vorzugsweise die C++-Standardtypen zu verwenden, sofern Sie in Ihren Projekten bereits C++20 nutzen können. Die Qt-Vergleichstypen werden in Qt 7 entfernt.
Qt stellt mehrere Vergleichstypen für einen Drei-Wege-Vergleich bereit, die mit einem Null-Literal vergleichbar sind. Um diese Vergleichstypen zu verwenden, müssen Sie den Header „ <QtCompare> “ einbinden. Diese Vergleichstypen werden anhand ihrer Ordnung kategorisiert, einem mathematischen Konzept, das zur Beschreibung der Anordnung oder Rangfolge von Elementen dient. Folgende Kategorien stehen zur Verfügung:
| C++-Typ | Qt-Typ | strict | total | Beispiel |
|---|---|---|---|---|
| std::strong_ordering | Qt::strong_ordering | ja | ja | Ganzzahltypen, groß-/kleinschreibungsempfindliche Zeichenfolgen, QDate, QTime |
| std::weak_ordering | Qt::weak_ordering | nein | ja | Zeichenfolgen ohne Groß-/Kleinschreibung, ungeordnete assoziative Container, QDateTime |
| std::partial_ordering | Qt::partial_ordering | nein | nein | Gleitkommatypen, QOperatingSystemVersion, QVariant |
Der stärkste Vergleichstyp, „ Qt::strong_ordering “, stellt eine strenge Gesamtordnung dar. Er verlangt, dass beliebige zwei Elemente so vergleichbar sind, dass Gleichheit Substituierbarkeit impliziert. Mit anderen Worten: Äquivalente Werte lassen sich nicht voneinander unterscheiden. Ein praktisches Beispiel wäre der groß- und kleinschreibungssensitive Vergleich zweier Zeichenketten. Beim Vergleich der Werte „ "Qt" “ und „ "Qt" “ wäre das Ergebnis beispielsweise „ Qt::strong_ordering::equal “. Beide Werte sind nicht voneinander zu unterscheiden, und alle deterministischen Operationen, die auf diese Werte angewendet werden, würden identische Ergebnisse liefern.
Qt::weak_ordering stellt eine totale Ordnung dar. Zwar müssen zwei beliebige Werte weiterhin vergleichbar sein, doch können äquivalente Werte unterscheidbar sein. Das klassische Beispiel hierfür wäre der Vergleich zweier Zeichenfolgen ohne Berücksichtigung der Groß-/Kleinschreibung. Beim Vergleich der Werte „ "Qt" “ und „ "qt" “ beispielsweise enthalten beide dieselben Buchstaben, jedoch in unterschiedlicher Darstellung. Dieser Vergleich würde zu „ Qt::weak_ordering::equivalent “ führen, jedoch nicht zu „ Equal “. Ein weiteres Beispiel wäre „ QDateTime “, das einen bestimmten Zeitpunkt in Form der Ortszeit oder einer beliebigen anderen Zeitzone, einschließlich UTC, darstellen kann. Die unterschiedlichen Darstellungen sind äquivalent, auch wenn sich ihre „ time() “ und manchmal auch ihre „ date() “ unterscheiden können.
Qt::partial_ordering stellt, wie der Name schon sagt, eine Teilordnung dar. Sie lässt die Möglichkeit zu, dass zwei Werte nicht vergleichbar sind, was zu einem unordered Zustand führt. Zudem können gleichwertige Werte dennoch unterscheidbar sein. Ein praktisches Beispiel wäre der Vergleich zweier Gleitkommawerte; ein Vergleich mit NaN (Not-a-Number) würde ein ungeordnetes Ergebnis liefern. Ein weiteres Beispiel ist der Vergleich zweier „ QOperatingSystemVersion “-Objekte. Der Vergleich von Versionen zweier verschiedener Betriebssysteme, wie beispielsweise Android und Windows, würde zu einem ungeordneten Ergebnis führen.
Die Verwendung dieser Vergleichstypen verbessert die Ausdruckskraft bei der Definition von Beziehungen. Darüber hinaus dienen sie als grundlegende Komponente für die Implementierung des Drei-Wege-Vergleichs mit C++17.
Siehe auch „ Qt::strong_ordering “, „ Qt::weak_ordering “ und „ Qt::partial_ordering “.
© 2026 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.