Namespaces
Variants

std::partial_ordering

Aus de.cppreference.net
 
 
Hilfsmittelbibliothek
Sprachunterstützung
Typunterstützung (grundlegende Typen, RTTI)
Bibliotheks-Feature-Test-Makros (C++20)
Programmhilfsmittel
Variadische Funktionen
Koroutinen-Unterstützung (C++20)
Vertragsunterstützung (C++26)
Drei-Wege-Vergleich
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Allgemeine Hilfsmittel
Relationale Operatoren (veraltet in C++20)
Integer-Vergleichsfunktionen
(C++20)(C++20)(C++20)    
(C++20)
Swap und Typoperationen
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
Allgemeine Vokabular-Typen
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)



 
Definiert in Header <compare>
class partial_ordering;
(seit C++20)

Der Klassentyp std::partial_ordering ist der Ergebnistyp eines Drei-Wege-Vergleichs, der:

  • Alle sechs relationalen Operatoren zulässt (==, !=, <, <=, >, >=).
  • Keine Substituierbarkeit impliziert: wenn a äquivalent zu b ist, f(a) möglicherweise nicht äquivalent zu f(b), wobei f eine Funktion bezeichnet, die nur vergleichsrelevante Zustände liest, die über die öffentlichen const-Member des Arguments zugänglich sind. Mit anderen Worten, äquivalente Werte können unterscheidbar sein.
  • Unvergleichbare Werte zulässt: a < b, a == b und a > b können alle false sein.

Konstanten

Der Typ std::partial_ordering hat vier gültige Werte, implementiert als konstante statische Datenelemente seines Typs:

Name Definition
inline constexpr std :: partial_ordering less
[static]
ein gültiger Wert, der eine Kleiner-als-Beziehung (geordnet vor) anzeigt
(öffentliche statische Elementkonstante)
inline constexpr std :: partial_ordering equivalent
[static]
ein gültiger Wert, der Äquivalenz anzeigt (weder geordnet vor noch geordnet nach)
(öffentliche statische Elementkonstante)
inline constexpr std :: partial_ordering greater
[static]
ein gültiger Wert, der eine Größer-als-Beziehung (geordnet nach) anzeigt
(öffentliche statische Elementkonstante)
inline constexpr std :: partial_ordering unordered
[static]
ein gültiger Wert, der eine Beziehung mit einem unvergleichbaren Wert anzeigt
(öffentliche statische Elementkonstante)

Konvertierungen

std::partial_ordering kann nicht implizit in andere Vergleichskategorien-Typen konvertiert werden, während sowohl std::strong_ordering als auch std::weak_ordering implizit in partial_ordering konvertierbar sind.

Vergleiche

Vergleichsoperatoren sind zwischen Werten dieses Typs und dem Literal ​ 0 ​ definiert. Dies unterstützt die Ausdrücke a <=> b == 0 oder a <=> b < 0 , die verwendet werden können, um das Ergebnis eines Drei-Wege-Vergleichsoperators in eine boolesche Relation umzuwandeln; siehe std::is_eq , std::is_lt , etc.

Diese Funktionen sind für gewöhnliches unqualified oder qualified lookup nicht sichtbar und können nur durch argument-dependent lookup gefunden werden, wenn std::partial_ordering eine assoziierte Klasse der Argumente ist.

Das Verhalten eines Programms, das versucht, einen partial_ordering mit etwas anderem als dem ganzzahligen Literal ​ 0 ​ zu vergleichen, ist undefiniert.

operator== operator< operator> operator<= operator>= operator<=>
vergleicht mit Null oder einem partial_ordering
(Funktion)

operator==

friend constexpr bool operator == ( partial_ordering v, /*unspecified*/ u ) noexcept ;
(1)
friend constexpr bool
operator == ( partial_ordering v, partial_ordering w ) noexcept = default ;
(2)

Parameter

v, w - std::partial_ordering Werte zur Überprüfung
u - ein unbenutzter Parameter beliebigen Typs, der das Literal Null akzeptiert

Rückgabewert

1) true wenn v equivalent ist, false wenn v less , greater , oder unordered ist
2) true wenn beide Parameter denselben Wert enthalten, false andernfalls

operator<

friend constexpr bool operator < ( partial_ordering v, /*unspecified*/ u ) noexcept ;
(1)
friend constexpr bool operator < ( /*unspecified*/ u, partial_ordering v ) noexcept ;
(2)

Parameter

v - ein std::partial_ordering -Wert zur Überprüfung
u - ein unbenutzter Parameter beliebigen Typs, der das Literal Null akzeptiert

Rückgabewert

1) true wenn v less ist, und false wenn v greater , equivalent oder unordered ist
2) true wenn v greater ist, und false wenn v less , equivalent oder unordered ist

operator<=

friend constexpr bool operator <= ( partial_ordering v, /*unspecified*/ u ) noexcept ;
(1)
friend constexpr bool operator <= ( /*unspecified*/ u, partial_ordering v ) noexcept ;
(2)

Parameter

v - ein std::partial_ordering -Wert zur Überprüfung
u - ein unbenutzter Parameter beliebigen Typs, der das Literal Null akzeptiert

Rückgabewert

1) true wenn v less oder equivalent ist, und false wenn v greater oder unordered ist
2) true wenn v greater oder equivalent ist, und false wenn v less oder unordered ist

operator>

friend constexpr bool operator > ( partial_ordering v, /*unspecified*/ u ) noexcept ;
(1)
friend constexpr bool operator > ( /*unspecified*/ u, partial_ordering v ) noexcept ;
(2)

Parameter

v - ein std::partial_ordering -Wert zur Überprüfung
u - ein ungenutzter Parameter beliebigen Typs, der das Literal Null akzeptiert

Rückgabewert

1) true wenn v greater ist, und false wenn v less , equivalent oder unordered ist
2) true wenn v less ist, und false wenn v greater , equivalent oder unordered ist

operator>=

friend constexpr bool operator >= ( partial_ordering v, /*unspecified*/ u ) noexcept ;
(1)
friend constexpr bool operator >= ( /*unspecified*/ u, partial_ordering v ) noexcept ;
(2)

Parameter

v - ein std::partial_ordering -Wert zur Überprüfung
u - ein unbenutzter Parameter beliebigen Typs, der das Literal Null akzeptiert

Rückgabewert

1) true wenn v greater oder equivalent ist, und false wenn v less oder unordered ist
2) true wenn v less oder equivalent ist, und false wenn v greater oder unordered ist

operator<=>

friend constexpr partial_ordering operator <=> ( partial_ordering v, /*unspecified*/ u ) noexcept ;
(1)
friend constexpr partial_ordering operator <=> ( /*unspecified*/ u, partial_ordering v ) noexcept ;
(2)

Parameter

v - ein std::partial_ordering -Wert zur Überprüfung
u - ein unbenutzter Parameter beliebigen Typs, der das Literal Null akzeptiert

Rückgabewert

1) v .
2) greater falls v less ist, less falls v greater ist, andernfalls v .

Hinweise

Der eingebaute operator<=> zwischen Gleitkommawerten verwendet diese Ordnung: die positive Null und die negative Null vergleichen sich als equivalent , können jedoch unterschieden werden, und NaN-Werte vergleichen sich als unordered mit jedem anderen Wert.

Beispiel

Siehe auch

Der Ergebnistyp des 3-Wege-Vergleichs, der alle 6 Operatoren unterstützt und substituierbar ist
(Klasse)
Der Ergebnistyp des 3-Wege-Vergleichs, der alle 6 Operatoren unterstützt und nicht substituierbar ist
(Klasse)