Namespaces
Variants

std:: weak_ordering

From cppreference.net
Utilities library
Definiert im Header <compare>
class weak_ordering ;
(seit C++20)

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

  • Akzeptiert alle sechs relationalen Operatoren ( == , != , < , <= , > , >= ).
  • Impliziert keine Austauschbarkeit: Wenn a äquivalent zu b ist, kann f ( a ) nicht äquivalent zu f ( b ) sein, 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 können äquivalente Werte unterscheidbar sein.
  • Erlaubt keine unvergleichbaren Werte : Genau eine der Aussagen a < b , a == b , oder a > b muss true sein.

Inhaltsverzeichnis

Konstanten

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

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

Konvertierungen

std::weak_ordering ist implizit konvertierbar zu std::partial_ordering , während std::strong_ordering implizit konvertierbar zu weak_ordering ist.

operator partial_ordering
implizite Konvertierung zu std::partial_ordering
(öffentliche Elementfunktion)

std::weak_ordering:: operator partial_ordering

constexpr operator partial_ordering ( ) const noexcept ;

Rückgabewert

std::partial_ordering::less falls v less ist, std::partial_ordering::greater falls v greater ist, std::partial_ordering::equivalent falls v equivalent ist.

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::weak_ordering eine assoziierte Klasse der Argumente ist.

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

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

operator==

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

Parameter

v, w - std::weak_ordering Werte zu prüfen
u - ein unbenutzter Parameter beliebigen Typs, der das Literal Null akzeptiert

Rückgabewert

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

operator<

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

Parameter

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

Rückgabewert

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

operator<=

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

Parameter

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

Rückgabewert

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

operator>

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

Parameter

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

Rückgabewert

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

operator>=

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

Parameter

v - ein std::weak_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 ist
2) true wenn v less oder equivalent ist, und false wenn v greater ist

operator<=>

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

Parameter

v - ein std::weak_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 .

Beispiel

Siehe auch

der Ergebnistyp des 3-Wege-Vergleichs, der alle 6 Operatoren unterstützt und substituierbar ist
(class)
der Ergebnistyp des 3-Wege-Vergleichs, der alle 6 Operatoren unterstützt, nicht substituierbar ist und unvergleichbare Werte erlaubt
(class)