C++ named requirements: Compare
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
-
Der Typ
Terfüllt die Anforderungen eines BinaryPredicate , und
Gegeben
-
comp, ein Objekt vom TypT, - 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 ) |
|
Stellt eine
strikte schwache Ordnungsrelation
mit folgenden Eigenschaften her:
|
||||
| equiv ( a, b ) | bool |
Stellt eine
Äquivalenzrelation
mit folgenden Eigenschaften her:
|
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) |
|
(C++11)
|
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) |
|
(C++11)
|
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) |
|
(C++11)
|
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
|
(C++20)
|
spezifiziert, dass eine
relation
eine strikte schwache Ordnung erzeugt
(Konzept) |
| Vergleichsoperatoren |
<
,
<=
,
>
,
>=
,
==
,
!=
, und
<=>
(C++20)
, vergleichen die Argumente
|