Namensräume
Varianten
Aktionen

C++ benannte Anforderungen: Compare

Von cppreference.com
 
 
C++ benannte Anforderungen
 

Compare ist eine Menge von Anforderungen, die einige Standardbibliotheksfunktionen an vom Benutzer bereitgestellte Funktionsobjekttypen stellen.

Der Rückgabewert der Funktionsaufrufoperation, die auf ein Objekt eines Typs angewendet wird, der Compare erfüllt, ergibt, wenn er in bool konvertiert wird, true, wenn das erste Argument des Aufrufs vor dem zweiten in der durch diesen Typ induzierten Relation einer strengen schwachen Ordnung steht, und andernfalls false.

Wie bei jedem BinaryPredicate ist die Auswertung dieses Ausdrucks nicht gestattet, nicht-const-Funktionen durch die dereferenzierten Iteratoren aufzurufen, und syntaktisch muss die Funktionsaufrufoperation const-Objektargumente akzeptieren, wobei das Verhalten unabhängig davon gleich ist, ob die Argumente const oder nicht-const sind.

Inhalt

[edit] Anforderungen

Der Typ T erfüllt Compare, wenn

Gegeben

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

Ausdruck Rückgabetyp Anforderungen
comp(a, b)

erfüllt BooleanTestable

(bis C++20)

modelliert boolean-testable

(seit C++20)
stellt eine Relation einer strengen schwachen Ordnung mit folgenden Eigenschaften her
  • Für alle a gilt: comp(a, a) == false.
  • Wenn comp(a, b) == true, dann gilt comp(b, a) == false.
  • Wenn comp(a, b) == true und comp(b, c) == true, dann gilt 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 gilt equiv(b, a) == true.
  • Wenn equiv(a, b) == true und equiv(b, c) == true, dann gilt equiv(a, c) == true.

Hinweis: comp induziert eine strikte totale Ordnung über den Äquivalenzklassen, die durch equiv bestimmt werden.

[edit] Standardbibliothek

Die folgenden Standardbibliotheksfunktionen erwarten einen Typ Compare.

Sammlung eindeutiger Schlüssel, sortiert nach Schlüsseln
(Klassenvorlage) [edit]
Sammlung von Schlüssel-Wert-Paaren, sortiert nach Schlüsseln, Schlüssel sind eindeutig
(Klassenvorlage) [edit]
Sammlung von Schlüsseln, sortiert nach Schlüsseln
(Klassenvorlage) [edit]
Sammlung von Schlüssel-Wert-Paaren, sortiert nach Schlüsseln
(Klassenvorlage) [edit]
passt einen Container an, um eine Prioritätswarteschlange bereitzustellen
(Klassenvorlage) [edit]
Sortiert einen Bereich aufsteigend
(Funktionstemplate) [edit]
sortiert die Elemente
(public member function of std::forward_list<T,Allocator>) [edit]
sortiert die Elemente
(public member function of std::list<T,Allocator>) [edit]
Sortiert einen Bereich von Elementen und behält dabei die Reihenfolge zwischen gleichen Elementen bei
(Funktionstemplate) [edit]
Sortiert die ersten N Elemente eines Bereichs
(Funktionstemplate) [edit]
Kopiert und sortiert einen Bereich von Elementen teilweise
(Funktionstemplate) [edit]
(C++11)
Prüft, ob ein Bereich aufsteigend sortiert ist
(Funktionstemplate) [edit]
Findet den größten sortierten Teilbereich
(Funktionstemplate) [edit]
Sortiert den gegebenen Bereich teilweise, so dass er durch das gegebene Element partitioniert wird
(Funktionstemplate) [edit]
Gibt einen Iterator zum ersten Element zurück, das nicht kleiner als der gegebene Wert ist
(Funktionstemplate) [edit]
Gibt einen Iterator zum ersten Element zurück, das *größer* als ein bestimmter Wert ist
(Funktionstemplate) [edit]
Stellt fest, ob ein Element in einem teilweise geordneten Bereich vorhanden ist
(Funktionstemplate) [edit]
gibt den Bereich von Elementen zurück, die einem bestimmten Schlüssel entsprechen
(Funktionstemplate) [edit]
Führt zwei sortierte Bereiche zusammen
(Funktionstemplate) [edit]
fügt zwei sortierte Listen zusammen
(public member function of std::forward_list<T,Allocator>) [edit]
fügt zwei sortierte Listen zusammen
(public member function of std::list<T,Allocator>) [edit]
Führt zwei sortierte Bereiche an Ort und Stelle zusammen
(Funktionstemplate) [edit]
Gibt true zurück, wenn eine Sequenz eine Untersequenz einer anderen ist
(Funktionstemplate) [edit]
Berechnet die Differenz zwischen zwei Mengen
(Funktionstemplate) [edit]
Berechnet den Schnitt zweier Mengen
(Funktionstemplate) [edit]
Berechnet die symmetrische Differenz zwischen zwei Mengen
(Funktionstemplate) [edit]
Berechnet die Vereinigung zweier Mengen
(Funktionstemplate) [edit]
Fügt ein Element zu einem Max-Heap hinzu
(Funktionstemplate) [edit]
Entfernt das größte Element aus einem Max-Heap
(Funktionstemplate) [edit]
Erstellt aus einem Bereich von Elementen einen Max-Heap
(Funktionstemplate) [edit]
Verwandelt einen Max-Heap in einen aufsteigend sortierten Bereich von Elementen
(Funktionstemplate) [edit]
(C++11)
Prüft, ob der gegebene Bereich ein Max-Heap ist
(Funktionstemplate) [edit]
Findet den größten Teilbereich, der ein Max-Heap ist
(Funktionstemplate) [edit]
Gibt den größeren der beiden Werte zurück
(Funktionstemplate) [edit]
Gibt das größte Element in einem Bereich zurück
(Funktionstemplate) [edit]
Gibt den kleineren der beiden Werte zurück
(Funktionstemplate) [edit]
gibt das kleinste Element in einem Bereich zurück
(Funktionsvorlage) [editieren]
(C++11)
gibt die kleinere und größere von zwei Elementen zurück
(Funktionsvorlage) [editieren]
gibt das kleinste und das größte Element in einem Bereich zurück
(Funktionsvorlage) [editieren]
gibt true zurück, wenn ein Bereich lexikographisch kleiner als ein anderer ist
(Funktionsvorlage) [editieren]
erzeugt die nächstgrößere lexikographische Permutation eines Bereichs von Elementen
(Funktionsvorlage) [editieren]
erzeugt die nächstkleinere lexikographische Permutation eines Bereichs von Elementen
(Funktionsvorlage) [editieren]

[edit] Fehlerberichte

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

DR angewendet auf Verhalten wie veröffentlicht Korrigiertes Verhalten
LWG 2114
(P2167R3)
C++98 kontextbezogene Konvertierbarkeit von Rückgabetypen in bool spiegelte nicht
die Praxis von Implementierungen wider
Anforderungen korrigiert
LWG 3031 C++98 Anforderungen an const-Werte waren unzureichend Anforderungen verstärkt

[edit] Siehe auch

gibt an, dass eine Relation eine strikt schwache Ordnung darstellt
(Konzept) [bearbeiten]
Vergleichsoperatoren <, <=, >, >=, ==, != und <=> (C++20), vergleicht die Argumente