Namespaces
Variants

C++ named requirements: Compare

From de.cppreference.net
C++ named requirements

Compare ist eine Reihe von Anforderungen, die von einigen Standardbibliothekseinrichtungen an die vom Benutzer bereitgestellten Funktionsobjekttypen erwartet werden.

Der Rückgabewert des Funktionsaufrufoperators, angewendet auf ein Objekt eines Typs, der Compare erfüllt, ergibt konvertiert zu bool den Wert true , wenn das erste Argument des Aufrufs in der strikten schwachen Ordnungsrelation , die durch diesen Typ induziert wird, vor dem zweiten erscheint, und false andernfalls.

Wie bei jedem BinaryPredicate darf die Auswertung dieses Ausdrucks keine nicht-konstanten Funktionen durch die dereferenzierten Iteratoren aufrufen und, syntaktisch gesehen, muss der Funktionsaufruf const -Objektargumente akzeptieren, mit demselben Verhalten unabhängig davon, ob die Argumente const oder nicht- const sind.

Inhalt

Anforderungen

Der Typ T erfüllt Compare wenn

Gegeben

  • comp , ein Objekt vom Typ T ,
  • equiv ( a, b ) , ein ausdrucksäquivalenter Ausdruck zu ! comp ( a, b ) && ! comp ( b, a ) .

Die folgenden Ausdrücke müssen gültig sein und ihre spezifizierten Effekte haben:

Ausdruck Rückgabetyp Anforderungen
comp ( a, b )

erfüllt BooleanTestable

(bis C++20)

modelliert boolean-testable

(seit C++20)
Stellt eine strikte schwache Ordnungsrelation mit folgenden Eigenschaften her:
  • Für alle a gilt: comp ( a, a ) == false .
  • Wenn comp ( a, b ) == true , dann comp ( b, a ) == false .
  • Wenn comp ( a, b ) == true und comp ( b, c ) == true , dann comp ( a, c ) == true .
equiv ( a, b ) bool Stellt eine Äquivalenzrelation mit folgenden Eigenschaften her:
  • Für alle a gilt: equiv ( a, a ) == true .
  • Wenn equiv ( a, b ) == true , dann equiv ( b, a ) == true .
  • Wenn equiv ( a, b ) == true und equiv ( b, c ) == true , dann equiv ( a, c ) == true .

Hinweis: comp induziert eine strenge Totalordnung auf den Äquivalenzklassen, die durch equiv bestimmt werden.

Standardbibliothek

Die folgenden Standardbibliothekseinrichtungen erwarten einen Compare-Typ.

Sammlung eindeutiger Schlüssel, sortiert nach Schlüsseln
(Klassentemplate)
Sammlung von Schlüssel-Wert-Paaren, sortiert nach Schlüsseln, Schlüssel sind eindeutig
(Klassentemplate)
Sammlung von Schlüsseln, sortiert nach Schlüsseln
(Klassentemplate)
Sammlung von Schlüssel-Wert-Paaren, sortiert nach Schlüsseln
(Klassentemplate)
Passt einen Container an, um eine Prioritätswarteschlange bereitzustellen
(Klassentemplate)
sortiert einen Bereich von Elementen
(Funktionstemplate & Algorithmus-Funktionsobjekt)
sortiert die Elemente
(öffentliche Elementfunktion von std::forward_list<T,Allocator>)
sortiert die Elemente
(öffentliche Elementfunktion von std::list<T,Allocator>)
sortiert einen Bereich von Elementen, wobei die relative Reihenfolge zwischen äquivalenten Elementen erhalten bleibt
(Funktionstemplate & Algorithmus-Funktionsobjekt)
sortiert die ersten N Elemente eines Bereichs
(Funktionstemplate & Algorithmus-Funktionsobjekt)
kopiert und sortiert einen Bereich von Elementen teilweise
(Funktionstemplate & Algorithmus-Funktionsobjekt)
(C++11)
prüft, ob ein Bereich sortiert ist
(Funktionstemplate & Algorithmus-Funktionsobjekt)
findet den größten sortierten Teilbereich
(Funktionstemplate & Algorithmus-Funktionsobjekt)
findet das N-te Element, wenn der Bereich sortiert wäre
(Funktionstemplate & Algorithmus-Funktionsobjekt)
findet das erste Element, das nicht kleiner als der gegebene Wert ist, mittels binärer Suche
(Funktionstemplate & Algorithmus-Funktionsobjekt)
findet das erste Element, das größer als der gegebene Wert ist, mittels binärer Suche
(Funktionstemplate & Algorithmus-Funktionsobjekt)
bestimmt, ob ein Element in einem Bereich existiert, mittels binärer Suche
(Funktionstemplate & Algorithmus-Funktionsobjekt)
findet den Bereich von Elementen, die dem gegebenen Wert entsprechen, mittels binärer Suche
(Funktionstemplate & Algorithmus-Funktionsobjekt)
vereinigt zwei sortierte Bereiche
(Funktionstemplate & Algorithmus-Funktionsobjekt)
vereinigt zwei sortierte Listen
(öffentliche Elementfunktion von std::forward_list<T,Allocator>)
vereinigt zwei sortierte Listen
(öffentliche Elementfunktion von std::list<T,Allocator>)
vereinigt zwei geordnete Bereiche an Ort und Stelle
(Funktionstemplate & Algorithmus-Funktionsobjekt)
bestimmt, ob eine Sequenz eine Untersequenz einer anderen ist
(Funktionstemplate & Algorithmus-Funktionsobjekt)
berechnet die Differenz zwischen zwei Mengen
(Funktionstemplate & Algorithmus-Funktionsobjekt)
berechnet die Schnittmenge zweier Mengen
(Funktionstemplate & Algorithmus-Funktionsobjekt)
berechnet die symmetrische Differenz zwischen zwei Mengen
(Funktionstemplate & Algorithmus-Funktionsobjekt)
berechnet die Vereinigungsmenge zweier Mengen
(Funktionstemplate & Algorithmus-Funktionsobjekt)
fügt ein Element zu einem Max-Heap hinzu
(Funktionstemplate & Algorithmus-Funktionsobjekt)
entfernt das größte Element aus einem Max-Heap
(Funktionstemplate & Algorithmus-Funktionsobjekt)
erstellt einen Max-Heap aus einem Bereich von Elementen
(Funktionstemplate & Algorithmus-Funktionsobjekt)
wandelt einen Max-Heap in einen Bereich von Elementen um, die in aufsteigender Reihenfolge sortiert sind
(Funktionstemplate & Algorithmus-Funktionsobjekt)
(C++11)
prüft, ob der gegebene Bereich ein Max-Heap ist
(Funktionstemplate & Algorithmus-Funktionsobjekt)
findet den größten Teilbereich, der ein Max-Heap ist
(Funktionstemplate & Algorithmus-Funktionsobjekt)
gibt den größeren der gegebenen Werte zurück
(Funktionstemplate & Algorithmus-Funktionsobjekt)
gibt das größte Element in einem Bereich zurück
(Funktionstemplate & Algorithmus-Funktionsobjekt)
gibt den kleineren der gegebenen Werte zurück
(Funktionstemplate & Algorithmus-Funktionsobjekt)
gibt das kleinste Element in einem Bereich zurück
(Funktionstemplate & Algorithmus-Funktionsobjekt)
(C++11)
gibt das kleinere und größere von zwei Elementen zurück
(Funktionstemplate & Algorithmus-Funktionsobjekt)
gibt die kleinsten und größten Elemente in einem Bereich zurück
(Funktionstemplate & Algorithmus-Funktionsobjekt)
vergleicht zwei Bereiche lexikografisch
(Funktionstemplate & Algorithmus-Funktionsobjekt)
erzeugt die nächstgrößere lexikografische Permutation eines Bereichs von Elementen
(Funktionstemplate & Algorithmus-Funktionsobjekt)
erzeugt die nächstkleinere lexikografische Permutation eines Bereichs von Elementen
(Funktionstemplate & Algorithmus-Funktionsobjekt)

Fehlerberichte

Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR Angewendet auf Verhalten wie veröffentlicht Korrektes Verhalten
LWG 2114
( P2167R3 )
C++98 kontextuelle Konvertierbarkeit von Rückgabetypen zu bool entsprach nicht
der Praxis der Implementierungen
Anforderungen korrigiert
LWG 3031 C++98 Anforderungen an const Werte waren unzureichend Anforderungen verstärkt

Siehe auch

spezifiziert, dass eine relation eine strikte schwache Ordnung erzeugt
(Konzept)
Vergleichsoperatoren < , <= , > , >= , == , != , und <=> (C++20) , vergleichen die Argumente