Algorithms library
Die Algorithmus-Bibliothek definiert Funktionen für verschiedene Zwecke (z.B. Suchen, Sortieren, Zählen, Manipulieren), die auf Elementbereichen operieren. Beachten Sie, dass ein
Bereich
definiert ist als
[
first
,
last
)
wobei
last
auf das Element
nach
dem letzten zu untersuchenden oder zu modifizierenden Element verweist.
Eingeschränkte Algorithmen (seit C++20)
C++20 bietet
eingeschränkte
Versionen der meisten Algorithmen im Namensraum
std::ranges
. In diesen Algorithmen kann ein
Bereich
entweder als
Iterator
-
Sentinel
-Paar oder als einzelnes
range
-Argument angegeben werden, und Projektionen sowie Aufrufbare mit Zeiger-auf-Mitglied werden unterstützt. Zusätzlich wurden die
Rückgabetypen
der meisten Algorithmen geändert, um alle während der Ausführung des Algorithmus berechneten potenziell nützlichen Informationen zurückzugeben.
std::vector<int> v{7, 1, 4, 0, -1}; std::ranges::sort(v); // eingeschränkter Algorithmus
Ausführungsrichtlinien (since C++17)
Die meisten Algorithmen verfügen über Überladungen, die Ausführungsrichtlinien akzeptieren. Die Standardbibliothek-Algorithmen unterstützen mehrere Ausführungsrichtlinien , und die Bibliothek stellt entsprechende Ausführungsrichtlinien-Typen und -Objekte bereit. Benutzer können eine Ausführungsrichtlinie statisch auswählen, indem sie einen parallelen Algorithmus mit einem Ausführungsrichtlinien-Objekt des entsprechenden Typs aufrufen.
Standardbibliothek-Implementierungen (aber nicht die Anwender) können zusätzliche Ausführungsrichtlinien als Erweiterung definieren. Die Semantik von parallelen Algorithmen, die mit einem Ausführungsrichtlinien-Objekt 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, sofern sowohl
std::
is_trivially_copy_constructible_v
<
T
>
als auch
std::
is_trivially_destructible_v
<
T
>
den Wert
true
besitzen, wobei
T
den Typ der Elemente darstellt.
|
Definiert im Header
<execution>
|
|
|
Definiert im Namespace
std::execution
|
|
|
(C++17)
(C++17)
(C++17)
(C++20)
|
Ausführungsrichtlinien-Typen
(Klasse) |
|
(C++17)
(C++17)
(C++17)
(C++20)
|
Globale Ausführungsrichtlinien-Objekte
(Konstante) |
|
Definiert im Namespace
std
|
|
|
(C++17)
|
Prüft, ob eine Klasse eine Ausführungsrichtlinie repräsentiert
(Klassen-Template) |
| 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 |
Nicht-modifizierende Sequenzoperationen
Stapelverarbeitung
|
Definiert im Header
<algorithm>
|
|
|
wendet ein unäres
Funktionsobjekt
auf Elemente eines
Bereichs
an
(Funktions-Template) |
|
|
(C++20)
|
wendet ein unäres
Funktionsobjekt
auf Elemente eines
Bereichs
an
(Algorithmus-Funktionsobjekt) |
|
(C++17)
|
wendet ein Funktionsobjekt auf die ersten N Elemente einer Sequenz an
(Funktions-Template) |
|
(C++20)
|
wendet ein Funktionsobjekt auf die ersten N Elemente einer Sequenz an
(Algorithmus-Funktionsobjekt) |
Suchoperationen
|
Definiert im Header
<algorithm>
|
|
|
(C++11)
(C++11)
(C++11)
|
prüft, ob ein Prädikat für
true
für alle, irgendeine oder keine Elemente in einem Bereich zutrifft
(Funktionsschablone) |
|
(C++20)
(C++20)
(C++20)
|
prüft, ob ein Prädikat für
true
für alle, irgendeine oder keine Elemente in einem Bereich zutrifft
(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
(Funktions-Template) |
|
(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
(Funktions-Template) |
|
|
(C++20)
|
findet die letzte Sequenz von Elementen in einem bestimmten Bereich
(Algorithmus-Funktionsobjekt) |
|
sucht nach einem Element aus einer Menge von Elementen
(Funktionsschablone) |
|
|
(C++20)
|
sucht nach einem beliebigen Element aus einer Menge von Elementen
(Algorithmus-Funktionsobjekt) |
|
findet die ersten zwei benachbarten Elemente, die gleich sind (oder ein gegebenes Prädikat erfüllen)
(Funktions-Template) |
|
|
(C++20)
|
findet die ersten zwei benachbarten Elemente, die gleich sind (oder ein gegebenes Prädikat erfüllen)
(Algorithmus-Funktionsobjekt) |
|
gibt die Anzahl der Elemente zurück, die bestimmte Kriterien erfüllen
(Funktions-Template) |
|
|
(C++20)
(C++20)
|
gibt die Anzahl der Elemente zurück, die bestimmte Kriterien erfüllen
(Algorithmus-Funktionsobjekt) |
|
findet die erste Position, an der zwei Bereiche sich unterscheiden
(Funktions-Template) |
|
|
(C++20)
|
findet die erste Position, an der zwei Bereiche sich unterscheiden
(Algorithmus-Funktionsobjekt) |
|
bestimmt ob zwei Elementgruppen identisch sind
(Funktions-Template) |
|
|
(C++20)
|
bestimmt, ob zwei Elementgruppen identisch sind
(Algorithmus-Funktionsobjekt) |
|
sucht nach dem ersten Vorkommen eines Elementbereichs
(Funktions-Template) |
|
|
(C++20)
|
such nach dem ersten Vorkommen eines Elementebereichs
(Algorithmus-Funktionsobjekt) |
|
sucht nach dem ersten Vorkommen einer Anzahl aufeinanderfolgender Kopien eines Elements in einem Bereich
(Funktions-Template) |
|
|
(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) |
Falt-Operationen (seit C++23)
|
Definiert in Header
<algorithm>
|
|
|
(C++23)
|
faltet eine Elementbereich von links
(Algorithmus-Funktionsobjekt) |
|
(C++23)
|
faltet eine Elementbereich von links unter Verwendung des ersten Elements als Anfangswert
(Algorithmus-Funktionsobjekt) |
|
(C++23)
|
faltet eine Elementbereich von rechts
(Algorithmus-Funktionsobjekt) |
|
(C++23)
|
faltet eine Elementbereich von rechts unter Verwendung des letzten Elements als Anfangswert
(Algorithmus-Funktionsobjekt) |
|
(C++23)
|
faltet eine Elementbereich von links und gibt ein
Paar
(Iterator, Wert) zurück
(Algorithmus-Funktionsobjekt) |
|
faltet eine Elementbereich von links unter Verwendung des ersten Elements als Anfangswert und gibt ein
Paar
(Iterator,
optional
) zurück
(Algorithmus-Funktionsobjekt) |
|
Modifizierende Sequenzoperationen
Kopiervorgänge
|
Definiert im Header
<algorithm>
|
|
|
(C++11)
|
kopiert eine Reihe von Elementen an einen neuen Speicherort
(Funktions-Template) |
|
(C++20)
(C++20)
|
kopiert eine Reihe von Elementen an einen neuen Speicherort
(Algorithmus-Funktionsobjekt) |
|
(C++11)
|
kopiert eine Anzahl von Elementen an einen neuen Speicherort
(Funktions-Template) |
|
(C++20)
|
kopiert eine Anzahl von Elementen an einen neuen Speicherort
(Algorithmus-Funktionsobjekt) |
|
kopiert eine Reihe von Elementen in umgekehrter Reihenfolge
(Funktions-Template) |
|
|
(C++20)
|
kopiert eine Reihe von Elementen in umgekehrter Reihenfolge
(Algorithmus-Funktionsobjekt) |
|
(C++11)
|
verschiebt eine Reihe von Elementen an einen neuen Speicherort
(Funktions-Template) |
|
(C++20)
|
verschiebt eine Reihe von Elementen an einen neuen Speicherort
(Algorithmus-Funktionsobjekt) |
|
(C++11)
|
verschiebt eine Reihe von Elementen in umgekehrter Reihenfolge an einen neuen Speicherort
(Funktions-Template) |
|
(C++20)
|
verschiebt eine Reihe von Elementen in umgekehrter Reihenfolge an einen neuen Speicherort
(Algorithmus-Funktionsobjekt) |
Swap-Operationen
|
Definiert in Header
<string_view>
|
|
|
tauscht die Werte zweier Objekte
(Funktionstemplate) |
|
|
Definiert in Header
<algorithm>
|
|
|
tauscht zwei Bereiche von Elementen
(Funktionstemplate) |
|
|
(C++20)
|
tauscht zwei Bereiche von Elementen
(Algorithmus-Funktionsobjekt) |
|
tauscht die von zwei Iteratoren referenzierten Elemente
(Funktionstemplate) |
|
Transformationsoperationen
|
Definiert in Header
<algorithm>
|
|
|
wendet eine Funktion auf einen Elementbereich an und speichert Ergebnisse in einem Zielbereich
(Funktions-Template) |
|
|
(C++20)
|
wendet eine Funktion auf einen Elementbereich an
(Algorithmus-Funktionsobjekt) |
|
ersetzt alle Werte, die bestimmte Kriterien erfüllen, durch einen anderen Wert
(Funktions-Template) |
|
|
(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
(Funktions-Template) |
|
|
(C++20)
(C++20)
|
kopiert einen Bereich und ersetzt Elemente, die bestimmte Kriterien erfüllen, durch einen anderen Wert
(Algorithmus-Funktionsobjekt) |
Generierungsoperationen
|
Definiert im Header
<algorithm>
|
|
|
weist jedem Element in einem Bereich den gegebenen Wert durch Kopierzuweisung zu
(Funktions-Template) |
|
|
(C++20)
|
weist einem Bereich von Elementen einen bestimmten Wert zu
(Algorithmus-Funktionsobjekt) |
|
weist N Elementen in einem Bereich den gegebenen Wert durch Kopierzuweisung zu
(Funktions-Template) |
|
|
(C++20)
|
weist einer Anzahl von Elementen einen Wert zu
(Algorithmus-Funktionsobjekt) |
|
weist jedem Element in einem Bereich die Ergebnisse aufeinanderfolgender Funktionsaufrufe zu
(Funktions-Template) |
|
|
(C++20)
|
speichert das Ergebnis einer Funktion in einem Bereich
(Algorithmus-Funktionsobjekt) |
|
weist N Elementen in einem Bereich die Ergebnisse aufeinanderfolgender Funktionsaufrufe zu
(Funktions-Template) |
|
|
(C++20)
|
speichert das Ergebnis von N Aufrufen einer Funktion
(Algorithmus-Funktionsobjekt) |
Entfernungsoperationen
|
Definiert im Header
<algorithm>
|
|
|
entfernt Elemente, die bestimmte Kriterien erfüllen
(Funktions-Template) |
|
|
(C++20)
(C++20)
|
entfernt Elemente, die bestimmte Kriterien erfüllen
(Algorithmus-Funktionsobjekt) |
|
kopiert einen Bereich von Elementen unter Auslassung derjenigen, die bestimmte Kriterien erfüllen
(Funktions-Template) |
|
|
(C++20)
(C++20)
|
kopiert einen Bereich von Elementen unter Auslassung derjenigen, die bestimmte Kriterien erfüllen
(Algorithmus-Funktionsobjekt) |
|
entfernt aufeinanderfolgende doppelte Elemente in einem Bereich
(Funktions-Template) |
|
|
(C++20)
|
entfernt aufeinanderfolgende doppelte Elemente in einem Bereich
(Algorithmus-Funktionsobjekt) |
|
erstellt eine Kopie eines Bereichs von Elementen, die keine aufeinanderfolgenden Duplikate enthält
(Funktions-Template) |
|
|
(C++20)
|
erstellt eine Kopie eines Bereichs von Elementen, die keine aufeinanderfolgenden Duplikate enthält
(Algorithmus-Funktionsobjekt) |
Reihenfolge-ändernde Operationen
|
Definiert im Header
<algorithm>
|
|
|
kehrt die Reihenfolge der Elemente in einem Bereich um
(Funktions-Template) |
|
|
(C++20)
|
kehrt die Reihenfolge der Elemente in einem Bereich um
(Algorithmus-Funktionsobjekt) |
|
erstellt eine Kopie eines Bereichs, die umgekehrt ist
(Funktions-Template) |
|
|
(C++20)
|
erstellt eine Kopie eines Bereichs, die umgekehrt ist
(Algorithmus-Funktionsobjekt) |
|
rotiert die Reihenfolge der Elemente in einem Bereich
(Funktions-Template) |
|
|
(C++20)
|
rotiert die Reihenfolge der Elemente in einem Bereich
(Algorithmus-Funktionsobjekt) |
|
kopiert und rotiert einen Bereich von Elementen
(Funktions-Template) |
|
|
(C++20)
|
kopiert und rotiert einen Bereich von Elementen
(Algorithmus-Funktionsobjekt) |
|
(C++20)
|
verschiebt Elemente in einem Bereich
(Funktions-Template) |
|
verschiebt Elemente in einem Bereich
(Algorithmus-Funktionsobjekt) |
|
|
(bis C++17)
(C++11)
|
ordnet Elemente in einem Bereich zufällig neu an
(Funktions-Template) |
|
(C++20)
|
ordnet Elemente in einem Bereich zufällig neu an
(Algorithmus-Funktionsobjekt) |
Abtastoperationen
|
Definiert im Header
<algorithm>
|
|
|
(C++17)
|
wählt N zufällige Elemente aus einer Sequenz aus
(Funktions-Template) |
|
(C++20)
|
wählt N zufällige Elemente aus einer Sequenz aus
(Algorithmus-Funktionsobjekt) |
Anforderungen
Einige Algorithmen erfordern, dass die durch die Argumente dargestellte 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 Ganzzahl n für die iter + n [1] ein gültiger Iterator ist, der auf ein Element der Sequenz zeigt, comp ( * ( iter + n ) , * iter ) == false [1] gilt. |
(bis C++20) |
|
Eine Sequenz ist
bezüglich
comp
und
proj
sortiert
für einen Komparator
comp
und eine Projektion
proj
wenn für jeden Iterator
iter
der auf die Sequenz zeigt und jede nicht-negative Ganzzahl
n
für die
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 eine ganze Zahl
n
existiert, so dass für alle
i
in
[
0
,
std::
distance
(
start, finish
)
)
,
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 von iter inkrementiert um n Schritte", unabhängig davon, ob iter ein Random-Access-Iterator ist.
Partitionierungsoperationen
|
Definiert im Header
<algorithm>
|
|
|
(C++11)
|
bestimmt, ob der Bereich durch das gegebene Prädikat partitioniert ist
(Funktions-Template) |
|
(C++20)
|
bestimmt, ob der Bereich durch das gegebene Prädikat partitioniert ist
(Algorithmus-Funktionsobjekt) |
|
unterteilt eine Reihe von Elementen in zwei Gruppen
(Funktions-Template) |
|
|
(C++20)
|
unterteilt eine Reihe von Elementen in zwei Gruppen
(Algorithmus-Funktionsobjekt) |
|
(C++11)
|
kopiert einen Bereich und unterteilt die Elemente in zwei Gruppen
(Funktions-Template) |
|
(C++20)
|
kopiert einen Bereich und unterteilt die Elemente in zwei Gruppen
(Algorithmus-Funktionsobjekt) |
|
unterteilt Elemente in zwei Gruppen unter Beibehaltung ihrer relativen Reihenfolge
(Funktions-Template) |
|
|
(C++20)
|
unterteilt Elemente in zwei Gruppen unter Beibehaltung ihrer relativen Reihenfolge
(Algorithmus-Funktionsobjekt) |
|
(C++11)
|
lokalisiert den Partitionierungspunkt eines partitionierten Bereichs
(Funktions-Template) |
|
(C++20)
|
lokalisiert den Partitionierungspunkt eines partitionierten Bereichs
(Algorithmus-Funktionsobjekt) |
Sortieroperationen
|
Definiert im Header
<algorithm>
|
|
|
sortiert einen Bereich in aufsteigender Reihenfolge
(Funktions-Template) |
|
|
(C++20)
|
sortiert einen Bereich in aufsteigender Reihenfolge
(Algorithmus-Funktionsobjekt) |
|
sortiert einen Bereich von Elementen unter Beibehaltung der Reihenfolge zwischen gleichen Elementen
(Funktions-Template) |
|
|
(C++20)
|
sortiert einen Bereich von Elementen unter Beibehaltung der Reihenfolge zwischen gleichen Elementen
(Algorithmus-Funktionsobjekt) |
|
sortiert die ersten N Elemente eines Bereichs
(Funktions-Template) |
|
|
(C++20)
|
sortiert die ersten N Elemente eines Bereichs
(Algorithmus-Funktionsobjekt) |
|
kopiert und teilweise sortiert einen Bereich von Elementen
(Funktions-Template) |
|
|
(C++20)
|
kopiert und teilweise sortiert einen Bereich von Elementen
(Algorithmus-Funktionsobjekt) |
|
(C++11)
|
prüft, ob ein Bereich in aufsteigender Reihenfolge sortiert ist
(Funktions-Template) |
|
(C++20)
|
prüft, ob ein Bereich in aufsteigender Reihenfolge sortiert ist
(Algorithmus-Funktionsobjekt) |
|
(C++11)
|
findet den größten sortierten Teilbereich
(Funktions-Template) |
|
(C++20)
|
findet den größten sortierten Teilbereich
(Algorithmus-Funktionsobjekt) |
|
sortiert den gegebenen Bereich teilweise und stellt sicher, dass er durch das gegebene Element partitioniert wird
(Funktions-Template) |
|
|
(C++20)
|
sortiert den gegebenen Bereich teilweise und stellt sicher, dass er durch das gegebene Element partitioniert wird
(Algorithmus-Funktionsobjekt) |
Binäre Suchoperationen (auf partitionierten Bereichen)
|
Definiert im 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 der Elemente zurück, die einem spezifischen Schlüssel entsprechen
(Funktionstemplate) |
|
|
(C++20)
|
gibt den Bereich der Elemente zurück, die einem spezifischen Schlüssel entsprechen
(Algorithmus-Funktionsobjekt) |
|
bestimmt, ob ein Element in einem teilweise geordneten Bereich existiert
(Funktionstemplate) |
|
|
(C++20)
|
bestimmt, ob ein Element in einem teilweise geordneten Bereich existiert
(Algorithmus-Funktionsobjekt) |
Mengenoperationen (auf sortierten Bereichen)
|
Definiert im Header
<algorithm>
|
|
|
gibt
true
zurück, falls eine Sequenz eine Teilsequenz einer anderen ist
(Funktions-Template) |
|
|
(C++20)
|
gibt
true
zurück, falls eine Sequenz eine Teilsequenz einer anderen ist
(Algorithmus-Funktionsobjekt) |
|
berechnet die Vereinigung zweier Mengen
(Funktions-Template) |
|
|
(C++20)
|
berechnet die Vereinigung zweier Mengen
(Algorithmus-Funktionsobjekt) |
|
berechnet den Schnitt zweier Mengen
(Funktions-Template) |
|
|
(C++20)
|
berechnet den Schnitt zweier Mengen
(Algorithmus-Funktionsobjekt) |
|
berechnet die Differenz zwischen zwei Mengen
(Funktions-Template) |
|
|
(C++20)
|
berechnet die Differenz zwischen zwei Mengen
(Algorithmus-Funktionsobjekt) |
|
berechnet die symmetrische Differenz zwischen zwei Mengen
(Funktions-Template) |
|
|
(C++20)
|
berechnet die symmetrische Differenz zwischen zwei Mengen
(Algorithmus-Funktionsobjekt) |
Merge-Operationen (auf sortierten Bereichen)
|
Definiert im Header
<algorithm>
|
|
|
vereinigt zwei sortierte Bereiche
(Funktions-Template) |
|
|
(C++20)
|
vereinigt zwei sortierte Bereiche
(Algorithmus-Funktionsobjekt) |
|
vereinigt zwei geordnete Bereiche direkt
(Funktions-Template) |
|
|
(C++20)
|
vereinigt zwei geordnete Bereiche direkt
(Algorithmus-Funktionsobjekt) |
Heap-Operationen
|
Ein zufällig zugreifbarer
Bereich
|
(bis C++20) |
|
Ein zufällig zugreifbarer
Bereich
Ein zufällig zugreifbarer
Bereich
|
(seit C++20) |
Ein Heap kann erstellt werden durch std::make_heap und ranges::make_heap (seit C++20) .
Weitere Eigenschaften des Heaps finden Sie unter max heap .
|
Definiert im Header
<algorithm>
|
|
|
fügt ein Element zu einem Max-Heap hinzu
(Funktions-Template) |
|
|
(C++20)
|
fügt ein Element zu einem Max-Heap hinzu
(Algorithmus-Funktionsobjekt) |
|
entfernt das größte Element aus einem Max-Heap
(Funktions-Template) |
|
|
(C++20)
|
entfernt das größte Element aus einem Max-Heap
(Algorithmus-Funktionsobjekt) |
|
erstellt einen Max-Heap aus einer Reihe von Elementen
(Funktions-Template) |
|
|
(C++20)
|
erstellt einen Max-Heap aus einer Reihe von Elementen
(Algorithmus-Funktionsobjekt) |
|
wandelt einen Max-Heap in eine aufsteigend sortierte Reihe von Elementen um
(Funktions-Template) |
|
|
(C++20)
|
wandelt einen Max-Heap in eine aufsteigend sortierte Reihe von Elementen um
(Algorithmus-Funktionsobjekt) |
|
(C++11)
|
prüft, ob der gegebene Bereich ein Max-Heap ist
(Funktions-Template) |
|
(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
(Funktions-Template) |
|
(C++20)
|
findet den größten Teilbereich, der ein Max-Heap ist
(Algorithmus-Funktionsobjekt) |
Minimum-/Maximum-Operationen
|
Definiert im Header
<algorithm>
|
|
|
gibt den größeren der gegebenen Werte zurück
(Funktions-Template) |
|
|
(C++20)
|
gibt den größeren der gegebenen Werte zurück
(Algorithmus-Funktionsobjekt) |
|
gibt das größte Element in einem Bereich zurück
(Funktions-Template) |
|
|
(C++20)
|
gibt das größte Element in einem Bereich zurück
(Algorithmus-Funktionsobjekt) |
|
gibt den kleineren der gegebenen Werte zurück
(Funktions-Template) |
|
|
(C++20)
|
gibt den kleineren der gegebenen Werte zurück
(Algorithmus-Funktionsobjekt) |
|
gibt das kleinste Element in einem Bereich zurück
(Funktions-Template) |
|
|
(C++20)
|
gibt das kleinste Element in einem Bereich zurück
(Algorithmus-Funktionsobjekt) |
|
(C++11)
|
gibt den kleineren und größeren von zwei Elementen zurück
(Funktions-Template) |
|
(C++20)
|
gibt den kleineren und größeren von zwei Elementen zurück
(Algorithmus-Funktionsobjekt) |
|
(C++11)
|
gibt das kleinste und das größte Element in einem Bereich zurück
(Funktions-Template) |
|
(C++20)
|
gibt das kleinste und das größte Element in einem Bereich zurück
(Algorithmus-Funktionsobjekt) |
|
(C++17)
|
begrenzt einen Wert zwischen einem Paar von Grenzwerten
(Funktions-Template) |
|
(C++20)
|
begrenzt einen Wert zwischen einem Paar von Grenzwerten
(Algorithmus-Funktionsobjekt) |
Lexikographische Vergleichsoperationen
|
Definiert im Header
<algorithm>
|
|
|
gibt
true
zurück, falls ein Bereich lexikographisch kleiner als ein anderer ist
(Funktions-Template) |
|
|
(C++20)
|
gibt
true
zurück, falls ein Bereich lexikographisch kleiner als ein anderer ist
(Algorithmus-Funktionsobjekt) |
|
vergleicht zwei Bereiche mittels 3-Wege-Vergleich
(Funktions-Template) |
|
Permutationsoperationen
|
Definiert im Header
<algorithm>
|
|
|
erzeugt die nächstgrößere lexikografische Permutation eines Elementbereichs
(Funktions-Template) |
|
|
(C++20)
|
erzeugt die nächstgrößere lexikografische Permutation eines Elementbereichs
(Algorithmus-Funktionsobjekt) |
|
erzeugt die nächstkleinere lexikografische Permutation eines Elementbereichs
(Funktions-Template) |
|
|
(C++20)
|
erzeugt die nächstkleinere lexikografische Permutation eines Elementbereichs
(Algorithmus-Funktionsobjekt) |
|
(C++11)
|
bestimmt, ob eine Sequenz eine Permutation einer anderen Sequenz ist
(Funktions-Template) |
|
(C++20)
|
bestimmt, ob eine Sequenz eine Permutation einer anderen Sequenz ist
(Algorithmus-Funktionsobjekt) |
Numerische Operationen
|
Definiert im Header
<numeric>
|
|
|
(C++11)
|
füllt einen Bereich mit aufeinanderfolgenden Inkrementen des Startwerts
(Funktions-Template) |
|
(C++23)
|
füllt einen Bereich mit aufeinanderfolgenden Inkrementen des Startwerts
(Algorithmus-Funktionsobjekt) |
|
summiert oder faltet eine Reihe von Elementen
(Funktions-Template) |
|
|
berechnet das innere Produkt zweier Elementbereiche
(Funktions-Template) |
|
|
berechnet die Differenzen zwischen benachbarten Elementen in einem Bereich
(Funktions-Template) |
|
|
berechnet die Partialsumme einer Reihe von Elementen
(Funktions-Template) |
|
|
(C++17)
|
ähnlich
std::accumulate
, jedoch außerhalb der Reihenfolge
(Funktions-Template) |
|
(C++17)
|
ähnlich
std::partial_sum
, schließt das
i
te
Eingabeelement von der
i
ten
Summe aus
(Funktions-Template) |
|
(C++17)
|
ähnlich
std::partial_sum
, schließt das
i
te
Eingabeelement in der
i
ten
Summe ein
(Funktions-Template) |
|
(C++17)
|
wendet ein Aufrufbares an und reduziert dann außerhalb der Reihenfolge
(Funktions-Template) |
|
(C++17)
|
wendet ein Aufrufbares an und berechnet dann exklusiven Scan
(Funktions-Template) |
|
(C++17)
|
wendet ein Aufrufbares an und berechnet dann inklusiven Scan
(Funktions-Template) |
Operationen auf nicht initialisiertem Speicher
|
Definiert im Header
<memory>
|
|
|
kopiert eine Reihe von Objekten in einen nicht initialisierten Speicherbereich
(Funktions-Template) |
|
|
(C++20)
|
kopiert eine Reihe von Objekten in einen nicht initialisierten Speicherbereich
(Algorithmus-Funktionsobjekt) |
|
(C++11)
|
kopiert eine Anzahl von Objekten in einen nicht initialisierten Speicherbereich
(Funktions-Template) |
|
(C++20)
|
kopiert eine Anzahl von Objekten in einen nicht initialisierten Speicherbereich
(Algorithmus-Funktionsobjekt) |
|
kopiert ein Objekt in einen nicht initialisierten Speicherbereich, definiert durch einen Bereich
(Funktions-Template) |
|
|
(C++20)
|
kopiert ein Objekt in einen nicht initialisierten Speicherbereich, definiert durch einen Bereich
(Algorithmus-Funktionsobjekt) |
|
kopiert ein Objekt in einen nicht initialisierten Speicherbereich, definiert durch einen Startpunkt und eine Anzahl
(Funktions-Template) |
|
|
(C++20)
|
kopiert ein Objekt in einen nicht initialisierten Speicherbereich, definiert durch einen Startpunkt und eine Anzahl
(Algorithmus-Funktionsobjekt) |
|
(C++17)
|
verschiebt eine Reihe von Objekten in einen nicht initialisierten Speicherbereich
(Funktionstemplate) |
|
(C++20)
|
verschiebt eine Reihe von Objekten in einen nicht initialisierten Speicherbereich
(Algorithmus-Funktionsobjekt) |
|
(C++17)
|
bewegt eine Anzahl von Objekten in einen nicht initialisierten Speicherbereich
(Funktions-Template) |
|
(C++20)
|
bewegt eine Anzahl von Objekten in einen nicht initialisierten Speicherbereich
(Algorithmus-Funktionsobjekt) |
|
(C++17)
|
Konstruiert Objekte durch
Default-Initialisierung
in einem nicht initialisierten Speicherbereich, definiert durch einen Bereich
(Funktions-Template) |
|
Konstruiert Objekte durch
Default-Initialisierung
in einem nicht initialisierten Speicherbereich, definiert durch einen Bereich
(Algorithmus-Funktionsobjekt) |
|
|
konstruiert Objekte durch
Default-Initialisierung
in einem nicht initialisierten Speicherbereich, definiert durch einen Startpunkt und eine Anzahl
(Funktions-Template) |
|
|
konstruiert Objekte durch
Default-Initialisierung
in einem nicht initialisierten Speicherbereich, definiert durch Start und Anzahl
(Algorithmus-Funktionsobjekt) |
|
|
(C++17)
|
konstruiert Objekte durch
Wertinitialisierung
in einem nicht initialisierten Speicherbereich, definiert durch einen Bereich
(Funktions-Template) |
|
Konstruiert Objekte durch
Wertinitialisierung
in einem nicht initialisierten Speicherbereich, definiert durch einen Bereich
(Algorithmus-Funktionsobjekt) |
|
|
(C++17)
|
konstruiert Objekte durch
Wertinitialisierung
in einem nicht initialisierten Speicherbereich, definiert durch einen Startpunkt und eine Anzahl
(Funktionsschablone) |
|
konstruiert Objekte durch
Wertinitialisierung
in einem nicht initialisierten Speicherbereich, definiert durch einen Startpunkt und eine Anzahl
(Algorithmus-Funktionsobjekt) |
|
|
(C++17)
|
zerstört eine Reihe von Objekten
(Funktionsschablone) |
|
(C++20)
|
zerstört einen Bereich von Objekten
(Algorithmus-Funktionsobjekt) |
|
(C++17)
|
zerstört eine Anzahl von Objekten in einem Bereich
(Funktionsschablone) |
|
(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) |
Zufallszahlengenerierung (since C++26)
|
Definiert im Header
<random>
|
|
|
(C++26)
|
füllt einen Bereich mit Zufallszahlen von einem einheitlichen Zufallsbitgenerator
(Algorithmus-Funktionsobjekt) |
Hinweise
| Feature-Test Makro | Wert | Std | Feature |
|---|---|---|---|
__cpp_lib_algorithm_iterator_requirements
|
202207L
|
(C++23) | Ranges-Iteratoren als Eingaben für Nicht-Ranges-Algorithmen |
__cpp_lib_clamp
|
201603L
|
(C++17) | std::clamp |
__cpp_lib_constexpr_algorithms
|
201806L
|
(C++20) | Constexpr für Algorithmen |
202306L
|
(C++26) | Constexpr-Stable-Sortierung | |
__cpp_lib_algorithm_default_value_type
|
202403L
|
(C++26) | Listeninitialisierung für Algorithmen |
__cpp_lib_freestanding_algorithm
|
202311L
|
(C++26) | Freestanding-Einrichtungen in <algorithm> |
__cpp_lib_robust_nonmodifying_seq_ops
|
201304L
|
(C++14) | Robuster machen nicht-modifizierender Sequenzoperationen (Zwei-Bereich-Ü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 |
C-Bibliothek
|
Definiert im Header
<cstdlib>
|
|
|
sortiert eine Reihe von Elementen mit unspezifiziertem Typ
(Funktion) |
|
|
durchsucht ein Array nach einem Element mit unspezifiziertem Typ
(Funktion) |
|
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 * first als größtes Element |
Es können Elemente existieren
gleich * first |
| LWG 2150 | C++98 | Die Definition einer sortierten Sequenz war fehlerhaft | korrigiert |
| LWG 2166 | C++98 |
Die Heap-Anforderung entsprach nicht eng genug
der Definition von Max-Heap |
Anforderung verbessert |
Siehe auch
|
C-Dokumentation
für
Algorithmen
|