Namensräume
Varianten

std::partial_ordering

Aus cppreference.com
< cpp‎ | utility
definiert in Header <compare>
class partial_ordering;

Die Klasse std::partial_ordering ist der Ergebnistyp eines 3-Wegevergleichsoperators, der

  • alle 6 Beziehungsoperatoren (==, !=, <, <=, >, >=) erlaubt
  • Ersetzbarkeit nicht verlangt: Fall a äquivalent zu b ist, so muß f(a) nicht äquivalent zu f(b) sein, wobei f eine Funktion beschreibt, die nur vergleichsrelevante Zustände liest, die über öffentliche Objektendaten der Argumente zugreifbar sind. Äquivalente Werte können unterscheidbar sein. und
  • erlaubt, daß für nichtvergleichbare Werte alle Vergleiche (a < b, a == b und a > b) falsch liefert.

Inhaltsverzeichnis

[Bearbeiten] Konstanten

Der Typ std::partial_ordering besitzt vier Gültigkeitswerte, die als statische, konstante Objektdaten implementiert sind:

Objektkonstanten Definition
less(inline constexpr)
[statisch]
ein Gültigkeitswert vom Typ std::partial_ordering, der eine kleiner-als-Beziehung (davor einordnen) beschreibt
(public static Mitglied konstanten)
equivalent(inline constexpr)
[statisch]
ein Gültigkeitswert vom Typ std::partial_ordering, der eine Äquivalenzbeziehung (weder davor noch danach einordnen) beschreibt
(public static Mitglied konstanten)
greater(inline constexpr)
[statisch]
ein Gültigkeitswert vom Typ std::partial_ordering, der eine größer-als-Beziehung (danach einordnen) beschreibt
(public static Mitglied konstanten)
unordered(inline constexpr)
[statisch]
ein Gültigkeitswert vom Typ std::partial_ordering, der eine Beziehung der Nichtvergleichbarkeit beschreibt
(public static Mitglied konstanten)

[Bearbeiten] Konvertierungen

std::partial_ordering kann nicht implizit zu anderen Vergleichskategorien konvertiert werden, während sowohl std::strong_ordering als auch std::weak_ordering implizit nach partial_ordering konvertierbar sind.

[Bearbeiten] Vergleiche

Vergleichsoperatoren sind definiert zwischen Werten dieses Typs und der generischen 0. Dieses unterstützt Ausdrücke der Form a <=> b ==0 oder a <=> b <0, welche benutzt werden können, um das Ergebnis des 3-Wegevergleichs in eine boolschen Beziehung zu bringen (hierzu auch std::is_eq, std::is_lt etc).

Diese Funktionen sind nicht sichtbar bei der normalen nicht qualifizierten oder qualifizierten Suche und {{#ifeq:YES|YES|können|kann} nur durch argumentenabhängige Suche gefunden werden, falls std::partial_ordering ein Klasse der Argumente ist.

Das Verhalten eines Programms, welches versucht {tt|partial_ordering}} mit etwas anderes als einer generischen 0 zu vergleichen, ist undefiniert.

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

operator==

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

Parameter

v, w - ein Wert vom Typ std::partial_ordering zum Vergleich
u - ein unbenutzter Parameter eines beliebigen Typs, der eine generische Null als Argument akzeptiert

Rückgabewert

1)true, falls väquivalent ist, und false, falls vkleiner, größer oder ungeordnet ist.
2)true, falls beide Parameter den selben Wert haben, ansonsten false

operator<

friendconstexprbool operator<(partial_ordering v, /*unspecified*/ u)noexcept;
(1)
friendconstexprbool operator<(/*unspecified*/ u, partial_ordering v)noexcept;
(2)

Parameter

v, w - ein Wert vom Typ std::partial_ordering zum Vergleich
u - ein unbenutzter Parameter eines beliebigen Typs, der eine generische Null als Argument akzeptiert

Rückgabewert

1)true, falls vkleiner ist, und false, falls väquivalent, größer oder ungeordnet ist.
1)true, falls vgrößer ist, und false, falls väquivalent, kleiner oder ungeordnet ist.

operator<=

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

Parameter

v, w - ein Wert vom Typ std::partial_ordering zum Vergleich
u - ein unbenutzter Parameter eines beliebigen Typs, der eine generische Null als Argument akzeptiert

Rückgabewert

1)true, falls vkleiner oder äquivalent ist, und false, falls vgrößer oder ungeordnet ist.
1)true, falls vgrößer oder äquivalent ist, und false, falls vkleiner oder ungeordnet ist.

operator>

friendconstexprbool operator>(partial_ordering v, /*unspecified*/ u)noexcept;
(1)
friendconstexprbool operator>(/*unspecified*/ u, partial_ordering v)noexcept;
(2)

Parameter

v, w - ein Wert vom Typ std::partial_ordering zum Vergleich
u - ein unbenutzter Parameter eines beliebigen Typs, der eine generische Null als Argument akzeptiert

Rückgabewert

1)true, falls vgrößerr ist, und false, falls väquivalent, kleiner oder ungeordnet ist.
1)true, falls vkleiner ist, und false, falls väquivalent, größer oder ungeordnet ist.

operator>=

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

Parameter

v, w - ein Wert vom Typ std::partial_ordering zum Vergleich
u - ein unbenutzter Parameter eines beliebigen Typs, der eine generische Null als Argument akzeptiert

Rückgabewert

1)true, falls vgrößer oder äquivalent ist, und false, falls vkleiner oder ungeordnet ist.
1)true, falls vkleiner oder äquivalent ist, und false, falls vgrößer oder ungeordnet ist.

operator<=>

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

Parameter

v, w - ein Wert vom Typ std::partial_ordering zum Vergleich
u - ein unbenutzter Parameter eines beliebigen Typs, der eine generische Null als Argument akzeptiert

Rückgabewert

1)v.
2)greater, falls vless ist, less, falls vgreater ist, ansonsten v.

[Bearbeiten] Anmerkungen

Der eingebaute operator<=> zwischen Fließkommazahlen benutzt die folgende Ordnung:

  • Die positive und die negative Null sind äquivalent, sind aber unterscheidbar.
  • Alle von NaN sind ungeordnet mit allen anderen Werten.

[Bearbeiten] Beispiel

[Bearbeiten] Referenzen

das Ergebnis des 3-Wegevergleichs, der alle 6 Operatoren unterstützt und ersetzbar ist
(Klasse)[edit]
das Ergebnis eines 3-Wegevergleichs, der alle 6 Operatoren unterstützt und nicht ersetzbar ist
(Klasse)[edit]
close