Namespaces
Variants

C++ named requirements: Compare

From 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.

Inhaltsverzeichnis

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, nach Schlüsseln sortiert, Schlüssel sind eindeutig
(Klassen-Template)
Sammlung von Schlüsseln, sortiert nach Schlüsseln
(Klassentemplate)
Sammlung von Schlüssel-Wert-Paaren, nach Schlüsseln sortiert
(Klassen-Template)
passt einen Container an, um eine Prioritätswarteschlange bereitzustellen
(Klassentemplate)
sortiert einen Bereich in aufsteigender Reihenfolge
(Funktions-Template)
sortiert die Elemente
(öffentliche Elementfunktion von std::forward_list<T,Allocator> )
sortiert die Elemente
(öffentliche Elementfunktion von std::list<T,Allocator> )
Sortiert eine Reihe von Elementen, während die Reihenfolge zwischen gleichen Elementen erhalten bleibt
(Funktionsschablone)
sortiert die ersten N Elemente eines Bereichs
(Funktions-Template)
kopiert und teilweise sortiert einen Bereich von Elementen
(Funktions-Template)
(C++11)
prüft, ob ein Bereich in aufsteigender Reihenfolge sortiert ist
(Funktionsschablone)
findet den größten sortierten Teilbereich
(Funktionsschablone)
sortiert den gegebenen Bereich teilweise und stellt sicher, dass er durch das gegebene Element partitioniert wird
(Funktions-Template)
gibt einen Iterator zum ersten Element zurück, das nicht kleiner als der gegebene Wert ist
(Funktions-Template)
gibt einen Iterator zum ersten Element zurück, größer als ein bestimmter Wert
(Funktions-Template)
bestimmt, ob ein Element in einem teilweise geordneten Bereich existiert
(Funktionsschablone)
gibt den Bereich der Elemente zurück, die einem spezifischen Schlüssel entsprechen
(Funktions-Template)
vereinigt zwei sortierte Bereiche
(Funktions-Template)
vereinigt zwei sortierte Listen
(öffentliche Elementfunktion von std::forward_list<T,Allocator> )
vereinigt zwei sortierte Listen
(öffentliche Elementfunktion von std::list<T,Allocator> )
verbindet zwei geordnete Bereiche direkt
(Funktionsschablone)
gibt true zurück, falls eine Sequenz eine Teilsequenz einer anderen ist
(Funktions-Template)
berechnet die Differenz zwischen zwei Mengen
(Funktions-Template)
berechnet die Schnittmenge zweier Mengen
(Funktionsschablone)
berechnet die symmetrische Differenz zweier Mengen
(Funktionsschablone)
berechnet die Vereinigung zweier Mengen
(Funktions-Template)
fügt ein Element zu einem Max-Heap hinzu
(Funktions-Template)
entfernt das größte Element aus einem Max-Heap
(Funktions-Template)
erstellt einen Max-Heap aus einer Reihe von Elementen
(Funktions-Template)
wandelt einen Max-Heap in einen Bereich von Elementen um, die in aufsteigender Reihenfolge sortiert sind
(Funktions-Template)
(C++11)
prüft, ob der gegebene Bereich ein Max-Heap ist
(Funktions-Template)
findet den größten Teilbereich, der einen Max-Heap darstellt
(Funktionsschablone)
gibt den größeren der gegebenen Werte zurück
(Funktions-Template)
gibt das größte Element in einem Bereich zurück
(Funktions-Template)
gibt den kleineren der gegebenen Werte zurück
(Funktions-Template)
gibt das kleinste Element in einem Bereich zurück
(Funktions-Template)
(C++11)
gibt das kleinere und größere von zwei Elementen zurück
(Funktions-Template)
gibt die kleinsten und größten Elemente in einem Bereich zurück
(Funktionsschablone)
gibt true zurück, wenn ein Bereich lexikographisch kleiner als ein anderer ist
(Funktions-Template)
erzeugt die nächstgrößere lexikografische Permutation eines Elementbereichs
(Funktions-Template)
erzeugt die nächstkleinere lexikografische Permutation eines Elementbereichs
(Funktionsschablone)

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