Algorithmen-Bibliothek
Die Algorithmenbibliothek definiert Funktionen für eine Vielzahl von Zwecken (z. B. Suchen, Sortieren, Zählen, Manipulieren), die auf Elementbereichen operieren. Beachten Sie, dass ein Bereich definiert ist als [first, last), wobei sich last auf das Element *nach* dem letzten zu inspizierenden oder zu modifizierenden Element bezieht.
[editieren] Eingeschränkte Algorithmen (seit C++20)
C++20 bietet eingeschränkte Versionen der meisten Algorithmen im Namespace std::ranges. In diesen Algorithmen kann ein Bereich entweder als ein Iterator-Sentinelsystem-Paar oder als ein einzelnes Bereichs-Argument angegeben werden, und Projektionen sowie Zeiger-auf-Mitglied-Aufrufe werden unterstützt. Zusätzlich wurden die Rückgabetypen der meisten Algorithmen geändert, um alle potenziell nützlichen Informationen zurückzugeben, die während der Ausführung des Algorithmus berechnet wurden.
std::vector<int> v{7, 1, 4, 0, -1}; std::ranges::sort(v); // constrained algorithm
[editieren] Ausführungsrichtlinien (seit C++17)
Die meisten Algorithmen haben Überladungen, die Ausführungsrichtlinien akzeptieren. Die Standardbibliotheksalgorithmen unterstützen mehrere Ausführungsrichtlinien, und die Bibliothek stellt entsprechende Ausführungsrichtlinientypen und -objekte bereit. Benutzer können eine Ausführungsrichtlinie statisch auswählen, indem sie einen parallelen Algorithmus mit einem Ausführungsrichtlinienobjekt des entsprechenden Typs aufrufen.
Implementierungen der Standardbibliothek (aber nicht die Benutzer) können zusätzliche Ausführungsrichtlinien als Erweiterung definieren. Die Semantik von parallelen Algorithmen, die mit einem Ausführungsrichtlinienobjekt eines implementierungsdefinierten Typs aufgerufen werden, ist implementierungsdefiniert.
Parallele Versionen von Algorithmen (mit Ausnahme von std::for_each und std::for_each_n) dürfen beliebige Kopien von Elementen aus Bereichen erstellen, solange sowohl std::is_trivially_copy_constructible_v<T> als auch std::is_trivially_destructible_v<T> true sind, wobei T der Typ der Elemente ist.
| Definiert in Header
<execution> | |
| Definiert im Namensraum
std::execution | |
| (C++17)(C++17)(C++17)(C++20) |
Ausführungsrichtlinientypen (Klasse) |
| (C++17)(C++17)(C++17)(C++20) |
Globale Ausführungsrichtlinienobjekte (Konstante) |
| Definiert im Namespace
std | |
| (C++17) |
Prüft, ob eine Klasse eine Ausführungsrichtlinie darstellt (Klassentemplate) |
| Feature-Test-Makro | Wert | Std | Feature |
|---|---|---|---|
__cpp_lib_parallel_algorithm |
201603L |
(C++17) | Parallele Algorithmen |
__cpp_lib_execution |
201603L |
(C++17) | Ausführungsrichtlinien |
201902L |
(C++20) | std::execution::unsequenced_policy |
[editieren] Nicht-modifizierende Sequenzoperationen
[editieren] Stapeloperationen
| Definiert in Header
<algorithm> | |
| wendet ein unäres Funktionsobjekt auf Elemente aus einem Bereich an (Funktion-Template) | |
| (C++20) |
wendet ein unäres Funktionsobjekt auf Elemente aus einem Bereich an (Algorithmus-Funktionsobjekt) |
| (C++17) |
Wendet ein Funktionsobjekt auf die ersten N Elemente einer Sequenz an (Funktionstempelat) |
| (C++20) |
Wendet ein Funktionsobjekt auf die ersten N Elemente einer Sequenz an (Algorithmus-Funktionsobjekt) |
[editieren] Suchoperationen
| Definiert in Header
<algorithm> | |
| (C++11)(C++11)(C++11) |
Prüft, ob eine Bedingung für alle, einige oder keine Elemente in einem Bereich wahr ist (Funktionstempelat) |
| (C++20)(C++20)(C++20) |
Prüft, ob eine Bedingung für alle, einige oder keine Elemente in einem Bereich wahr ist (Algorithmus-Funktionsobjekt) |
| (C++23)(C++23) |
Prüft, ob der Bereich das gegebene Element oder den gegebenen Teilbereich enthält (Algorithmus-Funktionsobjekt) |
| (C++11) |
Findet das erste Element, das bestimmte Kriterien erfüllt (Funktionstempelat) |
| (C++20)(C++20)(C++20) |
Findet das erste Element, das bestimmte Kriterien erfüllt (Algorithmus-Funktionsobjekt) |
| (C++23)(C++23)(C++23) |
Findet das letzte Element, das bestimmte Kriterien erfüllt (Algorithmus-Funktionsobjekt) |
| Findet die letzte Sequenz von Elementen in einem bestimmten Bereich (Funktionstempelat) | |
| (C++20) |
Findet die letzte Sequenz von Elementen in einem bestimmten Bereich (Algorithmus-Funktionsobjekt) |
| Sucht nach einem der Elemente aus einer Menge von Elementen (Funktionstempelat) | |
| (C++20) |
Sucht nach einem der Elemente aus einer Menge von Elementen (Algorithmus-Funktionsobjekt) |
| Findet die ersten beiden benachbarten Elemente, die gleich sind (oder eine gegebene Bedingung erfüllen) (Funktionstempelat) | |
| (C++20) |
Findet die ersten beiden benachbarten Elemente, die gleich sind (oder eine gegebene Bedingung erfüllen) (Algorithmus-Funktionsobjekt) |
| Gibt die Anzahl der Elemente zurück, die bestimmte Kriterien erfüllen (Funktionstempelat) | |
| (C++20)(C++20) |
Gibt die Anzahl der Elemente zurück, die bestimmte Kriterien erfüllen (Algorithmus-Funktionsobjekt) |
| Findet die erste Position, an der sich zwei Bereiche unterscheiden (Funktionstempelat) | |
| (C++20) |
Findet die erste Position, an der sich zwei Bereiche unterscheiden (Algorithmus-Funktionsobjekt) |
| Bestimmt, ob zwei Elementmengen gleich sind (Funktionstempelat) | |
| (C++20) |
Bestimmt, ob zwei Elementmengen gleich sind (Algorithmus-Funktionsobjekt) |
| Sucht nach dem ersten Vorkommen eines Elementbereichs (Funktionstempelat) | |
| (C++20) |
Sucht nach dem ersten Vorkommen eines Elementbereichs (Algorithmus-Funktionsobjekt) |
| Sucht nach dem ersten Vorkommen einer Anzahl aufeinanderfolgender Kopien eines Elements in einem Bereich (Funktionstempelat) | |
| (C++20) |
Sucht nach dem ersten Vorkommen einer Anzahl aufeinanderfolgender Kopien eines Elements in einem Bereich (Algorithmus-Funktionsobjekt) |
| (C++23) |
Prüft, ob ein Bereich mit einem anderen Bereich beginnt (Algorithmus-Funktionsobjekt) |
| (C++23) |
Prüft, ob ein Bereich mit einem anderen Bereich endet (Algorithmus-Funktionsobjekt) |
[editieren] Faltoperationen (seit C++23)
| Definiert in Header
<algorithm> | |
| (C++23) |
Faltet einen Elementbereich von links (Algorithmus-Funktionsobjekt) |
| (C++23) |
Faltet einen Elementbereich von links unter Verwendung des ersten Elements als Anfangswert (Algorithmus-Funktionsobjekt) |
| (C++23) |
Faltet einen Elementbereich von rechts (Algorithmus-Funktionsobjekt) |
| (C++23) |
Faltet einen Elementbereich von rechts unter Verwendung des letzten Elements als Anfangswert (Algorithmus-Funktionsobjekt) |
| (C++23) |
Faltet einen Elementbereich von links und gibt ein Paar (Iterator, Wert) zurück (Algorithmus-Funktionsobjekt) |
| Faltet einen Elementbereich von links unter Verwendung des ersten Elements als Anfangswert und gibt ein Paar (Iterator, optional) zurück (Algorithmus-Funktionsobjekt) | |
[editieren] Modifizierende Sequenzoperationen
[editieren] Kopieroperationen
| Definiert in Header
<algorithm> | |
| (C++11) |
Kopiert einen Elementbereich an einen neuen Speicherort (Funktionstempelat) |
| (C++20)(C++20) |
Kopiert einen Elementbereich an einen neuen Speicherort (Algorithmus-Funktionsobjekt) |
| (C++11) |
Kopiert eine Anzahl von Elementen an einen neuen Speicherort (Funktionstempelat) |
| (C++20) |
Kopiert eine Anzahl von Elementen an einen neuen Speicherort (Algorithmus-Funktionsobjekt) |
| Kopiert einen Elementbereich in umgekehrter Reihenfolge (Funktionstempelat) | |
| (C++20) |
Kopiert einen Elementbereich in umgekehrter Reihenfolge (Algorithmus-Funktionsobjekt) |
| (C++11) |
Verschiebt einen Elementbereich an einen neuen Speicherort (Funktionstempelat) |
| (C++20) |
Verschiebt einen Elementbereich an einen neuen Speicherort (Algorithmus-Funktionsobjekt) |
| (C++11) |
Verschiebt einen Elementbereich in umgekehrter Reihenfolge an einen neuen Speicherort (Funktionstempelat) |
| (C++20) |
Verschiebt einen Elementbereich in umgekehrter Reihenfolge an einen neuen Speicherort (Algorithmus-Funktionsobjekt) |
[editieren] Tauschoperationen
| Definiert in Header
<string_view> | |
| tauscht die Werte von zwei Objekten (Funktionsvorlage) | |
| Definiert in Header
<algorithm> | |
| Tauscht zwei Elementbereiche (Funktionstempelat) | |
| (C++20) |
Tauscht zwei Elementbereiche (Algorithmus-Funktionsobjekt) |
| Tauscht die Elemente, auf die zwei Iteratoren zeigen (Funktionstempelat) | |
[editieren] Transformationsoperationen
| Definiert in Header
<algorithm> | |
| Wendet eine Funktion auf einen Elementbereich an und speichert die Ergebnisse in einem Zielbereich (Funktionstempelat) | |
| (C++20) |
Wendet eine Funktion auf einen Elementbereich an (Algorithmus-Funktionsobjekt) |
| Ersetzt alle Werte, die bestimmte Kriterien erfüllen, durch einen anderen Wert (Funktionstempelat) | |
| (C++20)(C++20) |
Ersetzt alle Werte, die bestimmte Kriterien erfüllen, durch einen anderen Wert (Algorithmus-Funktionsobjekt) |
| Kopiert einen Bereich und ersetzt Elemente, die bestimmte Kriterien erfüllen, durch einen anderen Wert (Funktionstempelat) | |
| (C++20)(C++20) |
Kopiert einen Bereich und ersetzt Elemente, die bestimmte Kriterien erfüllen, durch einen anderen Wert (Algorithmus-Funktionsobjekt) |
[editieren] Generierungsoperationen
| Definiert in Header
<algorithm> | |
| Weist jedem Element in einem Bereich den gegebenen Wert zu (Funktionstempelat) | |
| (C++20) |
Weist einem Elementbereich einen bestimmten Wert zu (Algorithmus-Funktionsobjekt) |
| Weist N Elementen in einem Bereich den gegebenen Wert zu (Funktionstempelat) | |
| (C++20) |
Weist einer Anzahl von Elementen einen Wert zu (Algorithmus-Funktionsobjekt) |
| Weist die Ergebnisse aufeinanderfolgender Funktionsaufrufe jedem Element in einem Bereich zu (Funktionstempelat) | |
| (C++20) |
Speichert das Ergebnis einer Funktion in einem Bereich (Algorithmus-Funktionsobjekt) |
| Weist die Ergebnisse aufeinanderfolgender Funktionsaufrufe N Elementen in einem Bereich zu (Funktionstempelat) | |
| (C++20) |
Speichert das Ergebnis von N Funktionsanwendungen (Algorithmus-Funktionsobjekt) |
[editieren] Entfernungsoperationen
| Definiert in Header
<algorithm> | |
| entfernt Elemente, die bestimmte Kriterien erfüllen (Funktionstemplate) | |
| (C++20)(C++20) |
entfernt Elemente, die bestimmte Kriterien erfüllen (Algorithmus-Funktionsobjekt) |
| Kopiert einen Bereich von Elementen und lässt diejenigen aus, die bestimmte Kriterien erfüllen (Funktionstemplate) | |
| (C++20)(C++20) |
Kopiert einen Bereich von Elementen und lässt diejenigen aus, die bestimmte Kriterien erfüllen (Algorithmus-Funktionsobjekt) |
| Entfernt aufeinanderfolgende doppelte Elemente in einem Bereich (Funktionstemplate) | |
| (C++20) |
Entfernt aufeinanderfolgende doppelte Elemente in einem Bereich (Algorithmus-Funktionsobjekt) |
| Erstellt eine Kopie eines Bereichs von Elementen, die keine aufeinanderfolgenden Duplikate enthält (Funktionstemplate) | |
| (C++20) |
Erstellt eine Kopie eines Bereichs von Elementen, die keine aufeinanderfolgenden Duplikate enthält (Algorithmus-Funktionsobjekt) |
[editieren] Ordnungsändernde Operationen
| Definiert in Header
<algorithm> | |
| Kehrt die Reihenfolge der Elemente in einem Bereich um (Funktionstemplate) | |
| (C++20) |
Kehrt die Reihenfolge der Elemente in einem Bereich um (Algorithmus-Funktionsobjekt) |
| Erstellt eine Kopie eines Bereichs, der umgekehrt ist (Funktionstemplate) | |
| (C++20) |
Erstellt eine Kopie eines Bereichs, der umgekehrt ist (Algorithmus-Funktionsobjekt) |
| Rotiert die Reihenfolge der Elemente in einem Bereich (Funktionstemplate) | |
| (C++20) |
Rotiert die Reihenfolge der Elemente in einem Bereich (Algorithmus-Funktionsobjekt) |
| Kopiert und rotiert einen Bereich von Elementen (Funktionstemplate) | |
| (C++20) |
Kopiert und rotiert einen Bereich von Elementen (Algorithmus-Funktionsobjekt) |
| (C++20) |
Verschiebt Elemente in einem Bereich (Funktionstemplate) |
| Verschiebt Elemente in einem Bereich (Algorithmus-Funktionsobjekt) | |
| (bis C++17)(C++11) |
Ordnet Elemente in einem Bereich zufällig neu an (Funktionstemplate) |
| (C++20) |
Ordnet Elemente in einem Bereich zufällig neu an (Algorithmus-Funktionsobjekt) |
[editieren] Stichprobenoperationen
| Definiert in Header
<algorithm> | |
| (C++17) |
Wählt N zufällige Elemente aus einer Sequenz aus (Funktionstemplate) |
| (C++20) |
Wählt N zufällige Elemente aus einer Sequenz aus (Algorithmus-Funktionsobjekt) |
[editieren] Sortier- und verwandte Operationen
[editieren] Anforderungen
Einige Algorithmen erfordern, dass die durch die Argumente repräsentierte Sequenz „sortiert“ oder „partitioniert“ ist. Das Verhalten ist undefiniert, wenn die Anforderung nicht erfüllt ist.
|
Eine Sequenz ist bezüglich eines Komparators comp sortiert, wenn für jeden Iterator iter, der auf die Sequenz zeigt, und jede nicht-negative ganze Zahl n, so dass iter + n[1] ein gültiger Iterator ist, der auf ein Element der Sequenz zeigt, gilt comp(*(iter + n), *iter) == false[1]. |
(bis C++20) |
|
Eine Sequenz ist bezüglich comp und proj für einen Komparator comp und eine Projektion proj sortiert, wenn für jeden Iterator iter, der auf die Sequenz zeigt, und jede nicht-negative ganze Zahl n, so dass iter + n[1] ein gültiger Iterator ist, der auf ein Element der Sequenz zeigt, bool(std::invoke(comp, std::invoke(proj, *(iter + n)), Eine Sequenz ist bezüglich eines Komparators comp sortiert, wenn die Sequenz bezüglich comp und std::identity{} (der Identitätsprojektion) sortiert ist. |
(seit C++20) |
Eine Sequenz [start, finish) ist bezüglich eines Ausdrucks f(e) partitioniert, wenn es eine ganze Zahl n gibt, so dass für alle i in [0, std::distance(start, finish)) gilt f(*(start + i))[1] genau dann true ist, wenn i < n.
- ↑ 1.0 1.1 1.2 1.3 1.4 iter + n bedeutet einfach „das Ergebnis der n-maligen Inkrementierung von iter“, unabhängig davon, ob iter ein Zufallszugriff-Iterator ist.
[editieren] Partitionierungsoperationen
| Definiert in Header
<algorithm> | |
| (C++11) |
Stellt fest, ob der Bereich durch das gegebene Prädikat partitioniert ist (Funktionstemplate) |
| (C++20) |
Stellt fest, ob der Bereich durch das gegebene Prädikat partitioniert ist (Algorithmus-Funktionsobjekt) |
| Teilt einen Bereich von Elementen in zwei Gruppen auf (Funktionstemplate) | |
| (C++20) |
Teilt einen Bereich von Elementen in zwei Gruppen auf (Algorithmus-Funktionsobjekt) |
| (C++11) |
Kopiert einen Bereich und teilt die Elemente in zwei Gruppen auf (Funktionstemplate) |
| (C++20) |
Kopiert einen Bereich und teilt die Elemente in zwei Gruppen auf (Algorithmus-Funktionsobjekt) |
| Teilt Elemente in zwei Gruppen auf und behält dabei ihre relative Reihenfolge bei (Funktionstemplate) | |
| (C++20) |
Teilt Elemente in zwei Gruppen auf und behält dabei ihre relative Reihenfolge bei (Algorithmus-Funktionsobjekt) |
| (C++11) |
Findet den Partitionierungspunkt eines partitionierten Bereichs (Funktionstemplate) |
| (C++20) |
Findet den Partitionierungspunkt eines partitionierten Bereichs (Algorithmus-Funktionsobjekt) |
[editieren] Sortieroperationen
| Definiert in Header
<algorithm> | |
| Sortiert einen Bereich aufsteigend (Funktionstemplate) | |
| (C++20) |
Sortiert einen Bereich aufsteigend (Algorithmus-Funktionsobjekt) |
| Sortiert einen Bereich von Elementen und behält dabei die Reihenfolge zwischen gleichen Elementen bei (Funktionstemplate) | |
| (C++20) |
Sortiert einen Bereich von Elementen und behält dabei die Reihenfolge zwischen gleichen Elementen bei (Algorithmus-Funktionsobjekt) |
| Sortiert die ersten N Elemente eines Bereichs (Funktionstemplate) | |
| (C++20) |
Sortiert die ersten N Elemente eines Bereichs (Algorithmus-Funktionsobjekt) |
| Kopiert und sortiert einen Bereich von Elementen teilweise (Funktionstemplate) | |
| (C++20) |
Kopiert und sortiert einen Bereich von Elementen teilweise (Algorithmus-Funktionsobjekt) |
| (C++11) |
Prüft, ob ein Bereich aufsteigend sortiert ist (Funktionstemplate) |
| (C++20) |
Prüft, ob ein Bereich aufsteigend sortiert ist (Algorithmus-Funktionsobjekt) |
| (C++11) |
Findet den größten sortierten Teilbereich (Funktionstemplate) |
| (C++20) |
Findet den größten sortierten Teilbereich (Algorithmus-Funktionsobjekt) |
| Sortiert den gegebenen Bereich teilweise, so dass er durch das gegebene Element partitioniert wird (Funktionstemplate) | |
| (C++20) |
Sortiert den gegebenen Bereich teilweise, so dass er durch das gegebene Element partitioniert wird (Algorithmus-Funktionsobjekt) |
[editieren] Binäre Suchoperationen (auf partitionierten Bereichen)
| Definiert in Header
<algorithm> | |
| Gibt einen Iterator zum ersten Element zurück, das nicht kleiner als der gegebene Wert ist (Funktionstemplate) | |
| (C++20) |
Gibt einen Iterator zum ersten Element zurück, das nicht kleiner als der gegebene Wert ist (Algorithmus-Funktionsobjekt) |
| Gibt einen Iterator zum ersten Element zurück, das *größer* als ein bestimmter Wert ist (Funktionstemplate) | |
| (C++20) |
Gibt einen Iterator zum ersten Element zurück, das *größer* als ein bestimmter Wert ist (Algorithmus-Funktionsobjekt) |
| gibt den Bereich von Elementen zurück, die einem bestimmten Schlüssel entsprechen (Funktionstemplate) | |
| (C++20) |
gibt den Bereich von Elementen zurück, die einem bestimmten Schlüssel entsprechen (Algorithmus-Funktionsobjekt) |
| Stellt fest, ob ein Element in einem teilweise geordneten Bereich vorhanden ist (Funktionstemplate) | |
| (C++20) |
Stellt fest, ob ein Element in einem teilweise geordneten Bereich vorhanden ist (Algorithmus-Funktionsobjekt) |
[editieren] Mengenoperationen (auf sortierten Bereichen)
| Definiert in Header
<algorithm> | |
| Gibt true zurück, wenn eine Sequenz eine Untersequenz einer anderen ist (Funktionstemplate) | |
| (C++20) |
Gibt true zurück, wenn eine Sequenz eine Untersequenz einer anderen ist (Algorithmus-Funktionsobjekt) |
| Berechnet die Vereinigung zweier Mengen (Funktionstemplate) | |
| (C++20) |
Berechnet die Vereinigung zweier Mengen (Algorithmus-Funktionsobjekt) |
| Berechnet den Schnitt zweier Mengen (Funktionstemplate) | |
| (C++20) |
Berechnet den Schnitt zweier Mengen (Algorithmus-Funktionsobjekt) |
| Berechnet die Differenz zwischen zwei Mengen (Funktionstemplate) | |
| (C++20) |
Berechnet die Differenz zwischen zwei Mengen (Algorithmus-Funktionsobjekt) |
| Berechnet die symmetrische Differenz zwischen zwei Mengen (Funktionstemplate) | |
| Berechnet die symmetrische Differenz zwischen zwei Mengen (Algorithmus-Funktionsobjekt) | |
[editieren] Zusammenführungsoperationen (auf sortierten Bereichen)
| Definiert in Header
<algorithm> | |
| Führt zwei sortierte Bereiche zusammen (Funktionstemplate) | |
| (C++20) |
Führt zwei sortierte Bereiche zusammen (Algorithmus-Funktionsobjekt) |
| Führt zwei sortierte Bereiche an Ort und Stelle zusammen (Funktionstemplate) | |
| (C++20) |
Führt zwei sortierte Bereiche an Ort und Stelle zusammen (Algorithmus-Funktionsobjekt) |
[editieren] Heap-Operationen
|
Ein Zufallszugriffs-Bereich |
(bis C++20) |
|
Ein Zufallszugriffs-Bereich Ein Zufallszugriffs-Bereich |
(seit C++20) |
Ein Heap kann durch std::make_heap und ranges::make_heap(seit C++20) erstellt werden.
Weitere Eigenschaften von Heaps finden Sie unter Max Heap.
| Definiert in Header
<algorithm> | |
| Fügt ein Element zu einem Max-Heap hinzu (Funktionstemplate) | |
| (C++20) |
Fügt ein Element zu einem Max-Heap hinzu (Algorithmus-Funktionsobjekt) |
| Entfernt das größte Element aus einem Max-Heap (Funktionstemplate) | |
| (C++20) |
Entfernt das größte Element aus einem Max-Heap (Algorithmus-Funktionsobjekt) |
| Erstellt aus einem Bereich von Elementen einen Max-Heap (Funktionstemplate) | |
| (C++20) |
Erstellt aus einem Bereich von Elementen einen Max-Heap (Algorithmus-Funktionsobjekt) |
| Verwandelt einen Max-Heap in einen aufsteigend sortierten Bereich von Elementen (Funktionstemplate) | |
| (C++20) |
Verwandelt einen Max-Heap in einen aufsteigend sortierten Bereich von Elementen (Algorithmus-Funktionsobjekt) |
| (C++11) |
Prüft, ob der gegebene Bereich ein Max-Heap ist (Funktionstemplate) |
| (C++20) |
Prüft, ob der gegebene Bereich ein Max-Heap ist (Algorithmus-Funktionsobjekt) |
| (C++11) |
Findet den größten Teilbereich, der ein Max-Heap ist (Funktionstemplate) |
| (C++20) |
Findet den größten Teilbereich, der ein Max-Heap ist (Algorithmus-Funktionsobjekt) |
[editieren] Minimum-/Maximumoperationen
| Definiert in Header
<algorithm> | |
| Gibt den größeren der beiden Werte zurück (Funktionstemplate) | |
| (C++20) |
Gibt den größeren der beiden Werte zurück (Algorithmus-Funktionsobjekt) |
| Gibt das größte Element in einem Bereich zurück (Funktionstemplate) | |
| (C++20) |
Gibt das größte Element in einem Bereich zurück (Algorithmus-Funktionsobjekt) |
| Gibt den kleineren der beiden Werte zurück (Funktionstemplate) | |
| (C++20) |
Gibt den kleineren der beiden Werte zurück (Algorithmus-Funktionsobjekt) |
| gibt das kleinste Element in einem Bereich zurück (Funktionsvorlage) | |
| (C++20) |
gibt das kleinste Element in einem Bereich zurück (Algorithmus-Funktionsobjekt) |
| (C++11) |
gibt die kleinere und größere von zwei Elementen zurück (Funktionsvorlage) |
| (C++20) |
gibt die kleinere und größere von zwei Elementen zurück (Algorithmus-Funktionsobjekt) |
| (C++11) |
gibt das kleinste und das größte Element in einem Bereich zurück (Funktionsvorlage) |
| (C++20) |
gibt das kleinste und das größte Element in einem Bereich zurück (Algorithmus-Funktionsobjekt) |
| (C++17) |
klemmt einen Wert zwischen einem Paar von Grenzwerte (Funktionsvorlage) |
| (C++20) |
klemmt einen Wert zwischen einem Paar von Grenzwerte (Algorithmus-Funktionsobjekt) |
[editieren] Lexikographische Vergleichsoperationen
| Definiert in Header
<algorithm> | |
| gibt true zurück, wenn ein Bereich lexikographisch kleiner als ein anderer ist (Funktionsvorlage) | |
| gibt true zurück, wenn ein Bereich lexikographisch kleiner als ein anderer ist (Algorithmus-Funktionsobjekt) | |
| vergleicht zwei Bereiche mittels Drei-Wege-Vergleich (Funktionsvorlage) | |
[editieren] Permutationsoperationen
| Definiert in Header
<algorithm> | |
| erzeugt die nächstgrößere lexikographische Permutation eines Bereichs von Elementen (Funktionsvorlage) | |
| (C++20) |
erzeugt die nächstgrößere lexikographische Permutation eines Bereichs von Elementen (Algorithmus-Funktionsobjekt) |
| erzeugt die nächstkleinere lexikographische Permutation eines Bereichs von Elementen (Funktionsvorlage) | |
| (C++20) |
erzeugt die nächstkleinere lexikographische Permutation eines Bereichs von Elementen (Algorithmus-Funktionsobjekt) |
| (C++11) |
bestimmt, ob eine Sequenz eine Permutation einer anderen Sequenz ist (Funktionsvorlage) |
| (C++20) |
bestimmt, ob eine Sequenz eine Permutation einer anderen Sequenz ist (Algorithmus-Funktionsobjekt) |
[editieren] Numerische Operationen
| Definiert in der Header-Datei
<numeric> | |
| (C++11) |
füllt einen Bereich mit sukzessiven Inkrementen des Startwerts (Funktionstemplate) |
| (C++23) |
füllt einen Bereich mit sukzessiven Inkrementen des Startwerts (Funktionsobjekt für Algorithmen) |
| summiert oder faltet eine Reihe von Elementen (Funktionstemplate) | |
| berechnet das innere Produkt von zwei Elementreihen (Funktionstemplate) | |
| berechnet die Differenzen zwischen benachbarten Elementen in einer Reihe (Funktionstemplate) | |
| berechnet die partielle Summe einer Elementreihe (Funktionstemplate) | |
| (C++17) |
ähnlich wie std::accumulate, aber nicht-sequenziell (Funktionstemplate) |
| (C++17) |
ähnlich wie std::partial_sum, schließt das i-te Eingabeelement von der i-ten Summe aus (Funktionstemplate) |
| (C++17) |
ähnlich wie std::partial_sum, schließt das i-te Eingabeelement in die i-te Summe ein (Funktionstemplate) |
| (C++17) |
wendet eine aufrufbare Funktion an und reduziert dann nicht-sequenziell (Funktionstemplate) |
| (C++17) |
wendet eine aufrufbare Funktion an und berechnet dann einen exklusiven Scan (Funktionstemplate) |
| (C++17) |
wendet eine aufrufbare Funktion an und berechnet dann einen inklusiven Scan (Funktionstemplate) |
[editieren] Operationen auf uninitialisiertem Speicher
| Definiert in Header
<memory> | |
| kopiert einen Bereich von Objekten in einen uninitialisierten Speicherbereich (Funktions-Template) | |
| (C++20) |
kopiert einen Bereich von Objekten in einen uninitialisierten Speicherbereich (Algorithmus-Funktionsobjekt) |
| (C++11) |
kopiert eine Anzahl von Objekten in einen uninitialisierten Speicherbereich (Funktions-Template) |
| (C++20) |
kopiert eine Anzahl von Objekten in einen uninitialisierten Speicherbereich (Algorithmus-Funktionsobjekt) |
| kopiert ein Objekt in einen uninitialisierten Speicherbereich, definiert durch einen Bereich (Funktions-Template) | |
| (C++20) |
kopiert ein Objekt in einen uninitialisierten Speicherbereich, definiert durch einen Bereich (Algorithmus-Funktionsobjekt) |
| kopiert ein Objekt in einen uninitialisierten Speicherbereich, definiert durch einen Start und eine Anzahl (Funktions-Template) | |
| (C++20) |
kopiert ein Objekt in einen uninitialisierten Speicherbereich, definiert durch einen Start und eine Anzahl (Algorithmus-Funktionsobjekt) |
| (C++17) |
verschiebt einen Bereich von Objekten in einen uninitialisierten Speicherbereich (Funktions-Template) |
| (C++20) |
verschiebt einen Bereich von Objekten in einen uninitialisierten Speicherbereich (Algorithmus-Funktionsobjekt) |
| (C++17) |
verschiebt eine Anzahl von Objekten in einen uninitialisierten Speicherbereich (Funktions-Template) |
| (C++20) |
verschiebt eine Anzahl von Objekten in einen uninitialisierten Speicherbereich (Algorithmus-Funktionsobjekt) |
| konstruiert Objekte mittels Standardinitialisierung in einem uninitialisierten Speicherbereich, definiert durch einen Bereich (Funktions-Template) | |
| konstruiert Objekte mittels Standardinitialisierung in einem uninitialisierten Speicherbereich, definiert durch einen Bereich (Algorithmus-Funktionsobjekt) | |
| konstruiert Objekte mittels Standardinitialisierung in einem uninitialisierten Speicherbereich, definiert durch einen Start und eine Anzahl (Funktions-Template) | |
| konstruiert Objekte mittels Standardinitialisierung in einem uninitialisierten Speicherbereich, definiert durch Start und Anzahl (Algorithmus-Funktionsobjekt) | |
| konstruiert Objekte mittels Wertinitialisierung in einem uninitialisierten Speicherbereich, definiert durch einen Bereich (Funktions-Template) | |
| konstruiert Objekte mittels Wertinitialisierung in einem uninitialisierten Speicherbereich, definiert durch einen Bereich (Algorithmus-Funktionsobjekt) | |
| konstruiert Objekte mittels Wertinitialisierung in einem uninitialisierten Speicherbereich, definiert durch einen Start und eine Anzahl (Funktions-Template) | |
| konstruiert Objekte mittels Wertinitialisierung in einem uninitialisierten Speicherbereich, definiert durch einen Start und eine Anzahl (Algorithmus-Funktionsobjekt) | |
| (C++17) |
zerstört einen Bereich von Objekten (Funktions-Template) |
| (C++20) |
zerstört einen Bereich von Objekten (Algorithmus-Funktionsobjekt) |
| (C++17) |
zerstört eine Anzahl von Objekten in einem Bereich (Funktions-Template) |
| (C++20) |
zerstört eine Anzahl von Objekten in einem Bereich (Algorithmus-Funktionsobjekt) |
| (C++17) |
zerstört ein Objekt an einer gegebenen Adresse (Funktions-Template) |
| (C++20) |
zerstört ein Objekt an einer gegebenen Adresse (Algorithmus-Funktionsobjekt) |
| (C++20) |
erstellt ein Objekt an einer gegebenen Adresse (Funktions-Template) |
| (C++20) |
erstellt ein Objekt an einer gegebenen Adresse (Algorithmus-Funktionsobjekt) |
[editieren] Zufallszahlengenerierung (seit C++26)
| Definiert in Header
<random> | |
| (C++26) |
füllt einen Bereich mit Zufallszahlen aus einem gleichmäßigen Zufalls-Bit-Generator (Algorithmus-Funktionsobjekt) |
[editieren] Anmerkungen
| Feature-Test-Makro | Wert | Std | Feature |
|---|---|---|---|
__cpp_lib_algorithm_iterator_requirements |
202207L |
(C++23) | Bereichsiteratoren als Eingaben für Nicht-Bereichs-Algorithmen |
__cpp_lib_clamp |
201603L |
(C++17) | std::clamp |
__cpp_lib_constexpr_algorithms |
201806L |
(C++20) | Constexpr für Algorithmen |
202306L |
(C++26) | Constexpr stabile Sortierung | |
__cpp_lib_algorithm_default_value_type |
202403L |
(C++26) | Listeninitialisierung für Algorithmen |
__cpp_lib_freestanding_algorithm |
202311L |
(C++26) | Freistehende Einrichtungen in <algorithm> |
__cpp_lib_robust_nonmodifying_seq_ops |
201304L |
(C++14) | Robustere nicht-modifizierende Sequenzoperationen (Zwei-Bereichs-Überladungen für std::mismatch, std::equal und std::is_permutation) |
__cpp_lib_sample |
201603L |
(C++17) | std::sample |
__cpp_lib_shift |
201806L |
(C++20) | std::shift_left und std::shift_right |
[editieren] C-Bibliothek
| Definiert in Header
<cstdlib> | |
| sortiert einen Bereich von Elementen unbekannten Typs (Funktion) | |
| sucht ein Array nach einem Element unbekannten Typs ab (Funktion) | |
[editieren] 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 193 | C++98 | Heap erforderte, dass *first das größte Element ist | es kann Elemente geben gleich *first |
| LWG 2150 | C++98 | die Definition einer sortierten Sequenz war fehlerhaft | korrigiert |
| LWG 2166 | C++98 | die Heap-Anforderung stimmte nicht mit der Definition von Max Heap eng genug überein |
Anforderung verbessert |
[editieren] Siehe auch
| C-Dokumentation für Algorithmen
|