Namespaces
Variants

Algorithms library

From cppreference.net
Algorithm library
Constrained algorithms and algorithms on ranges (C++20)
Constrained algorithms, e.g. ranges::copy , ranges::sort , ...
Execution policies (C++17)
Non-modifying sequence operations
Batch operations
(C++17)
Search operations
Modifying sequence operations
Copy operations
(C++11)
(C++11)
Swap operations
Transformation operations
Generation operations
Removing operations
Order-changing operations
(until C++17) (C++11)
(C++20) (C++20)
Sampling operations
(C++17)

Sorting and related operations
Partitioning operations
Sorting operations
Binary search operations
(on partitioned ranges)
Set operations (on sorted ranges)
Merge operations (on sorted ranges)
Heap operations
Minimum/maximum operations
Lexicographical comparison operations
Permutation operations
C library
Numeric operations
Operations on uninitialized memory

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.

Inhaltsverzeichnis

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
Ausführungsrichtlinien-Typen
(Klasse)
(C++17) (C++17) (C++17) (C++20)
Globale Ausführungsrichtlinien-Objekte
(Konstante)
Definiert im Namespace std
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)
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)
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)
prüft, ob ein Prädikat für true für alle, irgendeine oder keine Elemente in einem Bereich zutrifft
(Algorithmus-Funktionsobjekt)
prüft, ob der Bereich das gegebene Element oder den gegebenen Teilbereich enthält
(Algorithmus-Funktionsobjekt)
findet das erste Element, das bestimmte Kriterien erfüllt
(Funktions-Template)
findet das erste Element, das bestimmte Kriterien erfüllt
(Algorithmus-Funktionsobjekt)
findet das letzte Element, das bestimmte Kriterien erfüllt
(Algorithmus-Funktionsobjekt)
findet die letzte Sequenz von Elementen in einem bestimmten Bereich
(Funktions-Template)
findet die letzte Sequenz von Elementen in einem bestimmten Bereich
(Algorithmus-Funktionsobjekt)
sucht nach einem Element aus einer Menge von Elementen
(Funktionsschablone)
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)
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)
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)
findet die erste Position, an der zwei Bereiche sich unterscheiden
(Algorithmus-Funktionsobjekt)
bestimmt ob zwei Elementgruppen identisch sind
(Funktions-Template)
bestimmt, ob zwei Elementgruppen identisch sind
(Algorithmus-Funktionsobjekt)
sucht nach dem ersten Vorkommen eines Elementbereichs
(Funktions-Template)
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)
sucht nach dem ersten Vorkommen einer Anzahl aufeinanderfolgender Kopien eines Elements in einem Bereich
(Algorithmus-Funktionsobjekt)
prüft, ob ein Bereich mit einem anderen Bereich beginnt
(Algorithmus-Funktionsobjekt)
prüft, ob ein Bereich mit einem anderen Bereich endet
(Algorithmus-Funktionsobjekt)

Falt-Operationen (seit C++23)

Definiert in Header <algorithm>
faltet eine Elementbereich von links
(Algorithmus-Funktionsobjekt)
faltet eine Elementbereich von links unter Verwendung des ersten Elements als Anfangswert
(Algorithmus-Funktionsobjekt)
faltet eine Elementbereich von rechts
(Algorithmus-Funktionsobjekt)
faltet eine Elementbereich von rechts unter Verwendung des letzten Elements als Anfangswert
(Algorithmus-Funktionsobjekt)
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>
kopiert eine Reihe von Elementen an einen neuen Speicherort
(Funktions-Template)
kopiert eine Reihe von Elementen an einen neuen Speicherort
(Algorithmus-Funktionsobjekt)
(C++11)
kopiert eine Anzahl von Elementen an einen neuen Speicherort
(Funktions-Template)
kopiert eine Anzahl von Elementen an einen neuen Speicherort
(Algorithmus-Funktionsobjekt)
kopiert eine Reihe von Elementen in umgekehrter Reihenfolge
(Funktions-Template)
kopiert eine Reihe von Elementen in umgekehrter Reihenfolge
(Algorithmus-Funktionsobjekt)
(C++11)
verschiebt eine Reihe von Elementen an einen neuen Speicherort
(Funktions-Template)
verschiebt eine Reihe von Elementen an einen neuen Speicherort
(Algorithmus-Funktionsobjekt)
verschiebt eine Reihe von Elementen in umgekehrter Reihenfolge an einen neuen Speicherort
(Funktions-Template)
verschiebt eine Reihe von Elementen in umgekehrter Reihenfolge an einen neuen Speicherort
(Algorithmus-Funktionsobjekt)

Swap-Operationen

Definiert in Header <algorithm> (bis C++11)
Definiert in Header <utility> (seit C++11)
Definiert in Header <string_view>
tauscht die Werte zweier Objekte
(Funktionstemplate)
Definiert in Header <algorithm>
tauscht zwei Bereiche von Elementen
(Funktionstemplate)
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)
wendet eine Funktion auf einen Elementbereich an
(Algorithmus-Funktionsobjekt)
ersetzt alle Werte, die bestimmte Kriterien erfüllen, durch einen anderen Wert
(Funktions-Template)
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)
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)
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)
weist einer Anzahl von Elementen einen Wert zu
(Algorithmus-Funktionsobjekt)
weist jedem Element in einem Bereich die Ergebnisse aufeinanderfolgender Funktionsaufrufe zu
(Funktions-Template)
speichert das Ergebnis einer Funktion in einem Bereich
(Algorithmus-Funktionsobjekt)
weist N Elementen in einem Bereich die Ergebnisse aufeinanderfolgender Funktionsaufrufe zu
(Funktions-Template)
speichert das Ergebnis von N Aufrufen einer Funktion
(Algorithmus-Funktionsobjekt)

Entfernungsoperationen

Definiert im Header <algorithm>
entfernt Elemente, die bestimmte Kriterien erfüllen
(Funktions-Template)
entfernt Elemente, die bestimmte Kriterien erfüllen
(Algorithmus-Funktionsobjekt)
kopiert einen Bereich von Elementen unter Auslassung derjenigen, die bestimmte Kriterien erfüllen
(Funktions-Template)
kopiert einen Bereich von Elementen unter Auslassung derjenigen, die bestimmte Kriterien erfüllen
(Algorithmus-Funktionsobjekt)
entfernt aufeinanderfolgende doppelte Elemente in einem Bereich
(Funktions-Template)
entfernt aufeinanderfolgende doppelte Elemente in einem Bereich
(Algorithmus-Funktionsobjekt)
erstellt eine Kopie eines Bereichs von Elementen, die keine aufeinanderfolgenden Duplikate enthält
(Funktions-Template)
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)
kehrt die Reihenfolge der Elemente in einem Bereich um
(Algorithmus-Funktionsobjekt)
erstellt eine Kopie eines Bereichs, die umgekehrt ist
(Funktions-Template)
erstellt eine Kopie eines Bereichs, die umgekehrt ist
(Algorithmus-Funktionsobjekt)
rotiert die Reihenfolge der Elemente in einem Bereich
(Funktions-Template)
rotiert die Reihenfolge der Elemente in einem Bereich
(Algorithmus-Funktionsobjekt)
kopiert und rotiert einen Bereich von Elementen
(Funktions-Template)
kopiert und rotiert einen Bereich von Elementen
(Algorithmus-Funktionsobjekt)
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)
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)
wählt N zufällige Elemente aus einer Sequenz aus
(Algorithmus-Funktionsobjekt)

Sortieren und verwandte Operationen

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 ) ) ,
std:: invoke ( proj, * iter ) ) )
[1] den Wert false hat.

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. 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>
bestimmt, ob der Bereich durch das gegebene Prädikat partitioniert ist
(Funktions-Template)
bestimmt, ob der Bereich durch das gegebene Prädikat partitioniert ist
(Algorithmus-Funktionsobjekt)
unterteilt eine Reihe von Elementen in zwei Gruppen
(Funktions-Template)
unterteilt eine Reihe von Elementen in zwei Gruppen
(Algorithmus-Funktionsobjekt)
kopiert einen Bereich und unterteilt die Elemente in zwei Gruppen
(Funktions-Template)
kopiert einen Bereich und unterteilt die Elemente in zwei Gruppen
(Algorithmus-Funktionsobjekt)
unterteilt Elemente in zwei Gruppen unter Beibehaltung ihrer relativen Reihenfolge
(Funktions-Template)
unterteilt Elemente in zwei Gruppen unter Beibehaltung ihrer relativen Reihenfolge
(Algorithmus-Funktionsobjekt)
lokalisiert den Partitionierungspunkt eines partitionierten Bereichs
(Funktions-Template)
lokalisiert den Partitionierungspunkt eines partitionierten Bereichs
(Algorithmus-Funktionsobjekt)

Sortieroperationen

Definiert im Header <algorithm>
sortiert einen Bereich in aufsteigender Reihenfolge
(Funktions-Template)
sortiert einen Bereich in aufsteigender Reihenfolge
(Algorithmus-Funktionsobjekt)
sortiert einen Bereich von Elementen unter Beibehaltung der Reihenfolge zwischen gleichen Elementen
(Funktions-Template)
sortiert einen Bereich von Elementen unter Beibehaltung der Reihenfolge zwischen gleichen Elementen
(Algorithmus-Funktionsobjekt)
sortiert die ersten N Elemente eines Bereichs
(Funktions-Template)
sortiert die ersten N Elemente eines Bereichs
(Algorithmus-Funktionsobjekt)
kopiert und teilweise sortiert einen Bereich von Elementen
(Funktions-Template)
kopiert und teilweise sortiert einen Bereich von Elementen
(Algorithmus-Funktionsobjekt)
(C++11)
prüft, ob ein Bereich in aufsteigender Reihenfolge sortiert ist
(Funktions-Template)
prüft, ob ein Bereich in aufsteigender Reihenfolge sortiert ist
(Algorithmus-Funktionsobjekt)
findet den größten sortierten Teilbereich
(Funktions-Template)
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)
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)
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)
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)
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)
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)
gibt true zurück, falls eine Sequenz eine Teilsequenz einer anderen ist
(Algorithmus-Funktionsobjekt)
berechnet die Vereinigung zweier Mengen
(Funktions-Template)
berechnet die Vereinigung zweier Mengen
(Algorithmus-Funktionsobjekt)
berechnet den Schnitt zweier Mengen
(Funktions-Template)
berechnet den Schnitt zweier Mengen
(Algorithmus-Funktionsobjekt)
berechnet die Differenz zwischen zwei Mengen
(Funktions-Template)
berechnet die Differenz zwischen zwei Mengen
(Algorithmus-Funktionsobjekt)
berechnet die symmetrische Differenz zwischen zwei Mengen
(Funktions-Template)
berechnet die symmetrische Differenz zwischen zwei Mengen
(Algorithmus-Funktionsobjekt)

Merge-Operationen (auf sortierten Bereichen)

Definiert im Header <algorithm>
vereinigt zwei sortierte Bereiche
(Funktions-Template)
vereinigt zwei sortierte Bereiche
(Algorithmus-Funktionsobjekt)
vereinigt zwei geordnete Bereiche direkt
(Funktions-Template)
vereinigt zwei geordnete Bereiche direkt
(Algorithmus-Funktionsobjekt)

Heap-Operationen

Ein zufällig zugreifbarer Bereich [ first , last ) ist ein Heap bezüglich eines Vergleichs comp , wenn bool ( comp ( first [ ( i - 1 ) / 2 ] , first [ i ] ) ) für alle ganzzahligen i in ( 0 , last - first ) false ist.

(bis C++20)

Ein zufällig zugreifbarer Bereich [ first , last ) ist ein Heap bezüglich comp und proj für einen Vergleich comp und eine Projektion proj , wenn bool ( std:: invoke ( comp, std:: invoke ( proj, first [ ( i - 1 ) / 2 ] ) ,
std:: invoke ( proj, first [ i ] ) )
für alle ganzzahligen i in ( 0 , last - first ) false ist.

Ein zufällig zugreifbarer Bereich [ first , last ) ist ein Heap bezüglich eines Vergleichs comp , wenn der Bereich ein Heap bezüglich comp und std:: identity { } (der Identitätsprojektion) ist.

(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)
fügt ein Element zu einem Max-Heap hinzu
(Algorithmus-Funktionsobjekt)
entfernt das größte Element aus einem Max-Heap
(Funktions-Template)
entfernt das größte Element aus einem Max-Heap
(Algorithmus-Funktionsobjekt)
erstellt einen Max-Heap aus einer Reihe von Elementen
(Funktions-Template)
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)
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)
prüft, ob der gegebene Bereich ein Max-Heap ist
(Algorithmus-Funktionsobjekt)
findet den größten Teilbereich, der ein Max-Heap ist
(Funktions-Template)
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)
gibt den größeren der gegebenen Werte zurück
(Algorithmus-Funktionsobjekt)
gibt das größte Element in einem Bereich zurück
(Funktions-Template)
gibt das größte Element in einem Bereich zurück
(Algorithmus-Funktionsobjekt)
gibt den kleineren der gegebenen Werte zurück
(Funktions-Template)
gibt den kleineren der gegebenen Werte zurück
(Algorithmus-Funktionsobjekt)
gibt das kleinste Element in einem Bereich zurück
(Funktions-Template)
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)
gibt den kleineren und größeren von zwei Elementen zurück
(Algorithmus-Funktionsobjekt)
gibt das kleinste und das größte Element in einem Bereich zurück
(Funktions-Template)
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)
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)
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)
erzeugt die nächstgrößere lexikografische Permutation eines Elementbereichs
(Algorithmus-Funktionsobjekt)
erzeugt die nächstkleinere lexikografische Permutation eines Elementbereichs
(Funktions-Template)
erzeugt die nächstkleinere lexikografische Permutation eines Elementbereichs
(Algorithmus-Funktionsobjekt)
bestimmt, ob eine Sequenz eine Permutation einer anderen Sequenz ist
(Funktions-Template)
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)
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)
ähnlich std::partial_sum , schließt das i te Eingabeelement von der i ten Summe aus
(Funktions-Template)
ähnlich std::partial_sum , schließt das i te Eingabeelement in der i ten Summe ein
(Funktions-Template)
wendet ein Aufrufbares an und reduziert dann außerhalb der Reihenfolge
(Funktions-Template)
wendet ein Aufrufbares an und berechnet dann exklusiven Scan
(Funktions-Template)
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)
kopiert eine Reihe von Objekten in einen nicht initialisierten Speicherbereich
(Algorithmus-Funktionsobjekt)
kopiert eine Anzahl von Objekten in einen nicht initialisierten Speicherbereich
(Funktions-Template)
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)
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)
kopiert ein Objekt in einen nicht initialisierten Speicherbereich, definiert durch einen Startpunkt und eine Anzahl
(Algorithmus-Funktionsobjekt)
verschiebt eine Reihe von Objekten in einen nicht initialisierten Speicherbereich
(Funktionstemplate)
verschiebt eine Reihe von Objekten in einen nicht initialisierten Speicherbereich
(Algorithmus-Funktionsobjekt)
bewegt eine Anzahl von Objekten in einen nicht initialisierten Speicherbereich
(Funktions-Template)
bewegt eine Anzahl von Objekten in einen nicht initialisierten Speicherbereich
(Algorithmus-Funktionsobjekt)
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)
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)
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)
zerstört einen Bereich von Objekten
(Algorithmus-Funktionsobjekt)
(C++17)
zerstört eine Anzahl von Objekten in einem Bereich
(Funktionsschablone)
zerstört eine Anzahl von Objekten in einem Bereich
(Algorithmus-Funktionsobjekt)
(C++17)
zerstört ein Objekt an einer gegebenen Adresse
(Funktions-Template)
zerstört ein Objekt an einer gegebenen Adresse
(Algorithmus-Funktionsobjekt)
erstellt ein Objekt an einer gegebenen Adresse
(Funktions-Template)
erstellt ein Objekt an einer gegebenen Adresse
(Algorithmus-Funktionsobjekt)

Zufallszahlengenerierung (since C++26)

Definiert im Header <random>
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