C++ benannte Anforderungen: Compare
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
- Der Typ
Terfüllt 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 angegebenen Effekte haben
| Ausdruck | Rückgabetyp | Anforderungen | ||||
|---|---|---|---|---|---|---|
| comp(a, b) |
|
stellt eine Relation einer strengen schwachen Ordnung mit folgenden Eigenschaften her
| ||||
| equiv(a, b) | bool | stellt eine Äquivalenzrelation mit folgenden Eigenschaften her
|
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) | |
| Sammlung von Schlüssel-Wert-Paaren, sortiert nach Schlüsseln, Schlüssel sind eindeutig (Klassenvorlage) | |
| Sammlung von Schlüsseln, sortiert nach Schlüsseln (Klassenvorlage) | |
| Sammlung von Schlüssel-Wert-Paaren, sortiert nach Schlüsseln (Klassenvorlage) | |
| passt einen Container an, um eine Prioritätswarteschlange bereitzustellen (Klassenvorlage) | |
| Sortiert einen Bereich aufsteigend (Funktionstemplate) | |
| sortiert die Elemente (public member function of std::forward_list<T,Allocator>) | |
| sortiert die Elemente (public member function of std::list<T,Allocator>) | |
| Sortiert einen Bereich von Elementen und behält dabei die Reihenfolge zwischen gleichen Elementen bei (Funktionstemplate) | |
| Sortiert die ersten N Elemente eines Bereichs (Funktionstemplate) | |
| Kopiert und sortiert einen Bereich von Elementen teilweise (Funktionstemplate) | |
| (C++11) |
Prüft, ob ein Bereich aufsteigend sortiert ist (Funktionstemplate) |
| (C++11) |
Findet den größten sortierten Teilbereich (Funktionstemplate) |
| Sortiert den gegebenen Bereich teilweise, so dass er durch das gegebene Element partitioniert wird (Funktionstemplate) | |
| Gibt einen Iterator zum ersten Element zurück, das nicht kleiner als der gegebene Wert ist (Funktionstemplate) | |
| Gibt einen Iterator zum ersten Element zurück, das *größer* als ein bestimmter Wert ist (Funktionstemplate) | |
| Stellt fest, ob ein Element in einem teilweise geordneten Bereich vorhanden ist (Funktionstemplate) | |
| gibt den Bereich von Elementen zurück, die einem bestimmten Schlüssel entsprechen (Funktionstemplate) | |
| Führt zwei sortierte Bereiche zusammen (Funktionstemplate) | |
| fügt zwei sortierte Listen zusammen (public member function of std::forward_list<T,Allocator>) | |
| fügt zwei sortierte Listen zusammen (public member function of std::list<T,Allocator>) | |
| Führt zwei sortierte Bereiche an Ort und Stelle zusammen (Funktionstemplate) | |
| Gibt true zurück, wenn eine Sequenz eine Untersequenz einer anderen ist (Funktionstemplate) | |
| Berechnet die Differenz zwischen zwei Mengen (Funktionstemplate) | |
| Berechnet den Schnitt zweier Mengen (Funktionstemplate) | |
| Berechnet die symmetrische Differenz zwischen zwei Mengen (Funktionstemplate) | |
| Berechnet die Vereinigung zweier Mengen (Funktionstemplate) | |
| Fügt ein Element zu einem Max-Heap hinzu (Funktionstemplate) | |
| Entfernt das größte Element aus einem Max-Heap (Funktionstemplate) | |
| Erstellt aus einem Bereich von Elementen einen Max-Heap (Funktionstemplate) | |
| Verwandelt einen Max-Heap in einen aufsteigend sortierten Bereich von Elementen (Funktionstemplate) | |
| (C++11) |
Prüft, ob der gegebene Bereich ein Max-Heap ist (Funktionstemplate) |
| (C++11) |
Findet den größten Teilbereich, der ein Max-Heap ist (Funktionstemplate) |
| Gibt den größeren der beiden Werte zurück (Funktionstemplate) | |
| Gibt das größte Element in einem Bereich zurück (Funktionstemplate) | |
| Gibt den kleineren der beiden Werte zurück (Funktionstemplate) | |
| gibt das kleinste Element in einem Bereich zurück (Funktionsvorlage) | |
| (C++11) |
gibt die kleinere und größere von zwei Elementen zurück (Funktionsvorlage) |
| (C++11) |
gibt das kleinste und das größte Element in einem Bereich zurück (Funktionsvorlage) |
| gibt true zurück, wenn ein Bereich lexikographisch kleiner als ein anderer ist (Funktionsvorlage) | |
| erzeugt die nächstgrößere lexikographische Permutation eines Bereichs von Elementen (Funktionsvorlage) | |
| erzeugt die nächstkleinere lexikographische Permutation eines Bereichs von Elementen (Funktionsvorlage) |
[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
| (C++20) |
gibt an, dass eine Relation eine strikt schwache Ordnung darstellt(Konzept) |
| Vergleichsoperatoren | <, <=, >, >=, ==, != und <=> (C++20), vergleicht die Argumente |