Namespaces
Variants

std:: strict_weak_order

From cppreference.net
Definiert im Header <concepts>
template < class R, class T, class U >
concept strict_weak_order = std:: relation < R, T, U > ;
(seit C++20)

Das Konzept strict_weak_order<R, T, U> spezifiziert, dass die relation R eine strenge schwache Ordnung auf ihre Argumente auferlegt.

Inhaltsverzeichnis

Semantische Anforderungen

Eine Relation r ist eine strikte schwache Ordnung, wenn

  • es ist irreflexiv: für alle x ist r ( x, x ) false ;
  • es ist transitiv: für alle a , b und c , falls r ( a, b ) und r ( b, c ) beide true sind, dann ist r ( a, c ) true ;
  • sei e ( a, b ) definiert als ! r ( a, b ) && ! r ( b, a ) , dann ist e transitiv: e ( a, b ) && e ( b, c ) impliziert e ( a, c ) .

Unter diesen Bedingungen lässt sich zeigen, dass e eine Äquivalenzrelation ist und r eine strenge Totalordnung auf den durch e bestimmten Äquivalenzklassen induziert.

Hinweise

Der Unterschied zwischen relation und strict_weak_order ist rein semantisch.

Referenzen

  • C++23-Standard (ISO/IEC 14882:2024):
  • 18.7.7 Konzept strict_weak_order [concept.strictweakorder]
  • C++20-Standard (ISO/IEC 14882:2020):
  • 18.7.7 Konzept strict_weak_order [concept.strictweakorder]

Siehe auch