<algorithm>
Definiert Container-Vorlagenfunktionen der Standardvorlagenbibliothek (STL), die Algorithmen ausführen.
namespace std {
template<class InputIterator, class Predicate>
bool all_of (
InputIterator _First,
InputIterator _Last,
Predicate _Pred
);
template<class InputIterator, class Predicate>
bool any_of (
InputIterator _First,
InputIterator _Last,
Predicate _Pred
);
template<class InputIterator, class Predicate>
bool none_of (
InputIterator _First,
InputIterator _Last,
Predicate _Pred
);
template<class InputIterator, class Function>
Fn1 for_each (
InputIterator _First,
InputIterator _Last,
Function _Func
);
template<class InputIterator, class Type>
InputIterator find (
InputIterator _First,
InputIterator _Last,
const Type& _Val
);
template<class InputIterator, class Predicate>
InputIterator find_if (
InputIterator _First,
InputIterator _Last,
Predicate _Pred
);
template<class InputIterator, class Predicate>
InputIterator find_if_not (
InputIterator _First,
InputIterator _Last,
Predicate _Pred
);
template<class ForwardIterator1, class ForwardIterator2>
ForwardIterator1 find_end (
ForwardIterator1 _First1,
ForwardIterator1 _Last1,
ForwardIterator2 _First2,
ForwardIterator2 _Last2
);
template<class ForwardIterator1, class ForwardIterator2,
class Predicate>
ForwardIterator1 find_end (
ForwardIterator1 _First1,
ForwardIterator1 _Last1,
ForwardIterator2 _First2,
ForwardIterator2 _Last2,
Predicate _Pred
);
template<class InputIterator, class ForwardIterator>
InputIterator1 find_first_of (
InputIterator _First1,
InputIterator _Last1,
ForwardIterator _First2,
ForwardIterator _Last2
);
template<class InputIterator, class ForwardIterator,
class Predicate>
InputIterator1 find_first_of (
InputIterator _First1,
InputIterator _Last1,
ForwardIterator _First2,
ForwardIterator _Last2,
Predicate _Pred
);
template<class ForwardIterator>
ForwardIterator adjacent_find (
ForwardIterator _First,
ForwardIterator _Last
);
template<class ForwardIterator, class Predicate>
ForwardIterator adjacent_find (
ForwardIterator _First,
ForwardIterator _Last,
Predicate _Pred
);
template<class InputIterator, class Type>
typename iterator_traits<InputIterator>::difference_type
count (
InputIterator _First,
InputIterator _Last,
const Type& _Val
);
template<class InputIterator, class Predicate>
typename iterator_traits<InputIterator>::difference_type
count_if (
InputIterator _First,
InputIterator _Last,
Predicate _Pred
);
template<class InputIterator1, class InputIterator2>
pair<InputIterator1, InputIterator2>
mismatch (
InputIterator1 _First1,
InputIterator1 _Last1,
InputIterator2 _First2
);
template<class InputIterator1, class InputIterator2, class Predicate>
pair<InputIterator1, InputIterator2>
mismatch (
InputIterator1 _First1,
InputIterator1 _Last1,
InputIterator2 _First2,
Predicate _Pred
);
template<class InputIterator1, class InputIterator2>
bool equal (
InputIterator1 _First1,
InputIterator1 _Last1,
InputIterator2 _First2
);
template<class InputIterator1, class InputIterator2, class Predicate>
bool equal (
InputIterator1 _First1,
InputIterator1 _Last1,
InputIterator2 _First2,
Predicate _Pred
);
template<class ForwardIterator1, class ForwardIterator2>
ForwardIterator1 search (
ForwardIterator1 _First1,
ForwardIterator1 _Last1,
ForwardIterator2 _First2,
ForwardIterator2 _Last2
);
template<class ForwardIterator1, class ForwardIterator2,
class Predicate>
ForwardIterator1 search (
ForwardIterator1 _First1,
ForwardIterator1 _Last1,
ForwardIterator2 _First2,
ForwardIterator2 _Last2,
Predicate _Pred
);
template<class ForwardIterator, class Size, class Type>
ForwardIterator search_n (
ForwardIterator _First,
ForwardIterator _Last,
Size _Count,
const Type& _Val
);
template<class ForwardIterator, class Size, class Type,
class Predicate>
ForwardIterator search_n (
ForwardIterator _First,
ForwardIterator _Last,
Size _Count,
const Type& _Val,
Predicate _Pred
);
Hinweise
Die STL-Algorithmen sind generisch, da sie eine Vielzahl von Datenstrukturen ausgeführt werden können.Die Datenstrukturen, zu denen sie gehören ausgeführt werden können nicht nur die STL-Containerklassen wie vector und list, sondern auch Programm-definierte Datenstrukturen und Arrays Elemente, die den Anforderungen eines bestimmten Algorithmus erfüllen.STL-Algorithmen erzielen diese Ebene des Allgemeinen, indem sie indirekt auf die Elemente eines Containers durch Iteratoren zugreifen und durchlaufen.
STL-Algorithmen verarbeiten Iteratorbereiche, die normalerweise von ihren Start- oder Zielpositionen angegeben werden.Die Bereiche, die verwiesen wird, müssen im Sinne gültig sein, dass alle Zeiger in den Bereichen dereferenzierbar sein müssen und, innerhalb der Sequenzen jedes Bereichs, die letzte Position von der ersten durch Zunahme erreichbar sein muss.
Die STL-Algorithmen erweitern die Aktionen, die von der Vorgänge die Memberfunktionen und jedes STL-Containers unterstützt werden und ermöglichen Funktion beispielsweise mit verschiedenen Typen von Containerobjekten gleichzeitig.Zwei Suffixe sind verwendet, um Informationen über den Zweck der Algorithmen zu übergeben.
, wenn Suffix angibt, dass der Algorithmus mit den Funktionsobjekten verwendet wird, die für die Werte der Elemente statt für die Werte der Elemente selbst eignet.Der find_if Algorithmus sucht nach Elementen, deren Werte das Kriterium erfüllen, das von einem Funktionsobjekt angegeben wird, und der find Algorithmus sucht für einen bestimmten Wert.
Das _copy Suffix, gibt an, dass der Algorithmus nicht nur die Werte der Elemente verarbeitet, aber auch kopiert die geänderten Werte in einen Zielbereich.Der reverse Algorithmus gibt die Reihenfolge der Elemente in einem Bereich um, und der reverse_copy Algorithmus kopiert auch das Ergebnis in einen Zielbereich.
STL-Algorithmen werden häufig in Gruppen klassifiziert, die einige über ihren Zweck oder Anforderungen angeben.Diese schließen das Ändern von Algorithmen ein, die den Wert von Elementen verglichen mit nonmodifying Algorithmen ändern, die nicht.Ändernde Algorithmen kann die Reihenfolge von Elementen, jedoch nicht die Werte ihrer Elemente.Das Entfernen von Algorithmen kann Elemente aus einem Bereich oder einer Kopie eines Bereichs vermeiden.Sortieralgorithmen ordnen die Elemente in einem Bereich auf verschiedene Arten neu und sortierte Bereichsalgorithmen angewendet werden nur nach Algorithmen, deren Elemente auf bestimmte Weise sortiert wurden.
Die numerischen STL-Algorithmen, die für das numerische Verarbeitung bereitgestellt werden, verfügen über eigene Headerdatei <numeric>, und Funktionsobjekte und Adapter werden in den <functional>-Headerfunktionsobjekten definiert, die boolesche Werte zurückgeben, die als Prädikate bekannt sind.Das standardmäßige binäre Prädikat ist der Vergleich operator<.Im Allgemeinen, die Elemente, die bestellte Anforderung sind sind weniger als vergleichbar, damit, alle zwei Elemente angegeben, es jedem bestimmt werden kann, dass sie äquivalent sind (insofern, dass kein kleiner ist als die andere ist), oder dass ein kleiner als das andere ist.Dies ergibt eine Reihenfolge unter den antivalenten Elementen.
Funktionen
Suchen von zwei angrenzenden Elemente, die entweder gleich sind oder eine bestimmte Bedingung erfüllen. |
|
Gibt true zurück, wenn eine Bedingung an jedem Element im angegebenen Bereich vorhanden ist. |
|
Gibt true zurück, wenn eine Bedingung mindestens einmal im angegebenen Bereich von Elementen vorhanden ist. |
|
Testet, ob ein Element in einem sortierten Bereich gibt, der gleich einem angegebenen Wert ist, oder, der darauf auf eine Weise entspricht, durch ein binäres Prädikat angegeben hat. |
|
Weist die Werte der Elemente eines Quellbereich zu einem Zielbereich zu, durchläuft die Quellfolge von gelöschte durch und ggf. weist ihnen neue Positionen zu. |
|
Weist die Werte der Elemente eines Quellbereich zu einem Zielbereich zu, durchläuft die Quellfolge von - rückwärts durch und weist ihnen neue Positionen zu. |
|
Kopieren Sie alle Elemente in einem angegebenen Bereich, die true für eine angegebene Bedingung testen |
|
Kopiert eine angegebene Anzahl an Elementen. |
|
Gibt die Anzahl der Elemente in einem Bereich zurück, dessen Werte einen angegebenen Wert übereinstimmen. |
|
Gibt die Anzahl der Elemente in einem Bereich zurück, dessen Werte eine angegebene Bedingung übereinstimmen. |
|
Vergleicht das Element mit zwei Bereichen durch Element entweder für die Gleichheit oder Äquivalenz auf eine Weise, die durch ein binäres Prädikat angegeben werden. |
|
Sucht ein Paar Positionen in einer geordneten Bereich, im ersten weniger als oder in der entsprechend der Position eines bestimmten Elements und der zweiten größeren als die Position des Elements, in der der Sinne möglicherweise der Äquivalenz oder der Reihenfolge, die verwendet werden, um die Positionen in der Sequenz festzulegen, durch ein binäres Prädikat angegeben wird. |
|
Weist den gleichen neuen Wert zu jedem Element in einem angegebenen Bereich zu. |
|
Weist einen neuen Wert auf eine angegebene Anzahl von Elementen in einem Bereich zu, der einem bestimmten Element beginnt. |
|
Sucht die Position des ersten Vorkommens eines Elements in einem Bereich, der einen angegebenen Wert enthält. |
|
Sucht in einem Bereich nach der letzten Untersequenz, die einer angegebenen Reihenfolge identisch ist, oder auf eine Weise angegeben durch ein binäres Prädikat entsprechendes ist. |
|
Sucht das erste Vorkommen von einem mehrerer Werte innerhalb eines Zielbereichs oder für das erste Vorkommen von einem mehrerer Elemente, die auf eine Weise angegeben durch ein binäres Prädikat zu einem angegebenen Satz der Elemente entsprechendes sind. |
|
Sucht die Position des ersten Vorkommens eines Elements in einem Bereich, der eine angegebene Bedingung erfüllt. |
|
Gibt das erste Element im angegebenen Bereich zurück, der keine Bedingung erfüllt. |
|
Wendet einen angegebenen Funktionsobjekt an jedes Element in einem Terminauftrag innerhalb eines Bereichs und gibt das Funktionsobjekt zurück. |
|
Weist die Werte, die durch ein Funktionsobjekt an jedes Element in einem Bereich generiert werden. |
|
Weist die Werte, die durch ein Funktionsobjekt an einer angegebenen Anzahl des Elements generiert werden, ist ein Bereich zurückgibt und der Position eine bestimmte Vergangenheit der letzte Wert. |
|
Testet, ob ein sortierter Bereich alle Elemente enthält, die sofort enthalten sind, sortierte Bereich, in dem das Reihenfolge oder Äquivalenzkriterium möglicherweise zwischen Elementen durch ein binäres Prädikat angegeben wird. |
|
Kombiniert die Elemente von zwei aufeinander sortierten Bereiche in einen einzelnen sortierten Bereich, in dem das Sortierkriterium möglicherweise durch ein binäres Prädikat angegeben wird. |
|
Gibt true zurück, wenn die Elemente im angegebenen Bereich einen Heap bilden. |
|
Gibt true zurück, wenn der angegebene Bereich einen Heap bis das letzte Element bildet. |
|
Gibt true zurück, wenn alle Elemente im angegebenen Bereich, die true für eine Bedingung testen, vor allen Elementen stammen, die false testen. |
|
Gibt true zurück, wenn die Elemente im angegebenen Bereich in sortierter Reihenfolge befinden. |
|
Gibt true zurück, wenn die Elemente im angegebenen Bereich in sortierter Reihenfolge befinden. |
|
Austausch zwei Werte sprachen durch ein Paar angegebene Iteratoren an. |
|
Vergleicht Element durch Element zwischen zwei Sequenzen, um zu bestimmen, das kleiner der zwei ist. |
|
Sucht die Position des ersten Elements in einem geordneten Bereich, der einen Wert hat, der größer als oder Äquivalent zu einem angegebenen Wert angegeben wird, in dem Sortierkriterium möglicherweise durch ein binäres Prädikat. |
|
Erstellt checked_array_iterator, das von anderen Algorithmen verwendet werden kann. |
|
Konvertiert Elemente aus einem angegebenen Bereichs in einen Heap, in dem das erste Element das größte ist und, für die ein Sortierungskriterium möglicherweise mit einem binären Prädikat angegeben wird. |
|
Vergleicht zwei Objekte und gibt das größere der beiden zurück, wobei Sortierkriterium möglicherweise durch ein binäres Prädikat angegeben wird. |
|
Sucht das erste Vorkommen des größten Elements in einem angegebenen Bereich, in dem das Sortierkriterium möglicherweise durch ein binäres Prädikat angegeben wird. |
|
Führt alle Elemente aus zwei sortierten Quellbereichen in einem einzelnen, sortierten Zielbereich, in dem Sortierkriterium möglicherweise durch ein binäres Prädikat angegeben wird. |
|
Vergleicht zwei Objekte und gibt die kleinere der beiden zurück, wobei Sortierkriterium möglicherweise durch ein binäres Prädikat angegeben wird. |
|
Sucht das erste Vorkommen des kleinsten Elements in einem angegebenen Bereich, in dem das Sortierkriterium möglicherweise durch ein binäres Prädikat angegeben wird. |
|
Vergleicht zwei Eingabeparameter und gibt sie als Paar, in der Reihenfolge weniger zu größtem zurück. |
|
Führt die Aufgaben aus, die von min_element und max_element in einem Aufruf ausgeführt wird. |
|
Vergleicht das Element mit zwei Bereichen durch Element entweder für die Gleichheit oder Entsprechung auf eine Weise, die durch ein binäres Prädikat angegeben werden und sucht die erste Position, in der ein Unterschied auftritt. |
|
Verschiebungselemente zugeordnet mit einem angegebenen Bereich. |
|
Verschiebt die Elemente aus einem Iterator auf andere.Die Verschiebungsanfänge mit dem letzten Element in einem angegebenen Bereich und endet mit dem ersten Element in diesem Bereich. |
|
Ordnet die Elemente in einem Bereich neu damit die ursprüngliche Reihenfolge durch die folgenden lexikografisch größere Permutation ersetzt wird, wenn vorhanden, wo der Sinne möglicherweise von als Nächstes mit einem binären Prädikat angegeben wird. |
|
Gibt true zurück, wenn eine Bedingung nie mit Elementen im angegebenen Bereich vorhanden ist. |
|
Partitioniert einen Bereich von Elementen und ordnungsgemäß sucht das n-te-Element der Sequenz im Bereich, damit alle Elemente davor kleiner oder gleich ihn sind und alle Elemente, die Sie in der Sequenz folgen, sie größer oder gleich sind. |
|
Ordnet eine angegebene Anzahl kleinerer Elemente in einem Bereich in eine nondescending Reihenfolge oder gemäß einem Sortierkriterium an, das durch ein binäres Prädikat angegeben wird. |
|
Kopiert Elemente aus einem Quellbereich in einen Zielbereich, in dem die Quellelemente entweder durch kleiner oder einem anderen angegebenen binäres Prädikat sortiert werden. |
|
Klassifiziert Elemente in einem Bereich in zwei disjunkte Sätze, wenn diese Elemente ein unäres Prädikat erfüllen, das die vorausgeht, die es nicht erfüllen können. |
|
Kopiert Elemente, für die eine Bedingung true zu einem Ziel ist, und, für die die Bedingung false zu anderen ist.Die Elemente müssen von einem angegebenen Bereich stammen. |
|
Gibt das erste Element im angegebenen Bereich zurück, der die Bedingung nicht erfüllt.Die Elemente werden sortiert, sodass die, die die Bedingung erfüllen, vor denen stammen, die nicht. |
|
Entfernt das größte Element aus der Beginn eines Heaps der zweitletzten-Position im Bereich und bildet dann einen neuen Heap von den übrigen Elemente. |
|
Ordnet die Elemente in einem Bereich neu damit die ursprüngliche Reihenfolge durch die folgenden lexikografisch größere Permutation ersetzt wird, wenn vorhanden, wo der Sinne möglicherweise von als Nächstes mit einem binären Prädikat angegeben wird. |
|
Fügt ein Element hinzu, das am Ende eines Bereichs einen vorhandenen Heap ist, der aus früheren Elemente im Bereich besteht. |
|
Ordnet eine Sequenz von N-Elementen in einem Bereich in einen von N neu!mögliche Anordnungen zufällig ausgewählt. |
|
Eliminiert einen angegebenen Wert eines angegebenen Bereich, ohne die Reihenfolge der verbleibenden Elemente zu beeinträchtigen und das Ende eines neuen Bereichs zurückzugeben, der vom angegebenen Wert frei ist. |
|
Kopiert Elemente aus einem Quellbereich zu einem Zielbereich, außer dass Elemente eines angegebenen Werts werden kopiert, nicht, ohne die Reihenfolge der verbleibenden Elemente zu beeinträchtigen und das Ende eines neuen Zielbereichs zurückzugeben. |
|
Kopiert Elemente aus einem Quellbereich zu einem Zielbereich, außer dass, ein Prädikat zufrieden stellend, werden kopiert, nicht, ohne die Reihenfolge der verbleibenden Elemente zu beeinträchtigen und das Ende eines neuen Zielbereichs zurückzugeben. |
|
Eliminiert Elemente, die ein Prädikat aus einem angegebenen Bereich erfüllen, ohne die Reihenfolge der verbleibenden Elemente zu beeinträchtigen und das Ende eines neuen Bereichs zurückzugeben, der vom angegebenen Wert frei ist. |
|
Überprüft jedes Element in einem Bereich und ersetzt, sofern einen angegebenen Wert entspricht. |
|
Überprüft jedes Element in einem Quellbereich und ersetzt, sofern einen angegebenen Wert beim Kopieren des Ergebnisses in einen neuen Zielbereich entspricht. |
|
Überprüft jedes Element in einem Quellbereich und ersetzt, sofern ein angegebenes Prädikat beim Kopieren des Ergebnisses in einen neuen Zielbereich erfüllt. |
|
Überprüft jedes Element in einem Bereich und ersetzt, sofern ein angegebenes Prädikat erfüllt. |
|
Gibt die Reihenfolge der Elemente in einem Bereich um. |
|
Gibt die Reihenfolge der Elemente innerhalb eines Quellbereichs beim Kopieren in einen Zielbereich um |
|
Tauscht die benachbarten Elementen in zwei Bereiche aus. |
|
Tauscht die Elemente in zwei angrenzenden Bereichen innerhalb eines Quellbereichs aus und kopiert das Ergebnis in einen Zielbereich. |
|
Sucht das erste Vorkommen einer Sequenz innerhalb eines Zielbereichs, dessen Elemente gleich der in einer angegebenen Sequenz von Elementen sind, oder dessen Elemente auf eine Weise angegeben durch ein binäres Prädikat auf Elemente in der angegebenen Reihenfolge entsprechendes sind. |
|
Suchen nach der erste Untersequenz in einem Bereich der aus einer angegebenen Anzahl von Elementen, die einen bestimmten Wert oder eine Beziehung zu diesem Wert haben, wie durch ein binäres Prädikat angegeben. |
|
Vereinigt alle Elemente, die einem sortierten Quellbereich gehören, jedoch nicht auf eine Sekunde sortierte Quellbereich, in ein einzelnes, sortierte Zielbereich, in dem Sortierkriterium möglicherweise durch ein binäres Prädikat angegeben wird. |
|
Vereinigt alle Elemente, die beiden sortierten Quellbereichen in einen einzelnen gehören, sortierten Zielbereich, in dem Sortierkriterium möglicherweise durch ein binäres Prädikat angegeben wird. |
|
Vereinigt alle Elemente, die einem gehören, jedoch nicht beide, der sortierten Quellbereiche in einem einzelnen, sortierten Zielbereich, in dem Sortierkriterium möglicherweise durch ein binäres Prädikat angegeben wird. |
|
Vereinigt alle Elemente, die bis mindestens einen von zwei sortierten Quellbereichen in einen einzelnen gehören, sortierten Zielbereich, in dem Sortierkriterium möglicherweise durch ein binäres Prädikat angegeben wird. |
|
Ordnet die Elemente in einem angegebenen Bereich in eine nondescending Reihenfolge oder gemäß einem Sortierkriterium an, das durch ein binäres Prädikat angegeben wird. |
|
Konvertiert einen Heap in einen sortierten Bereich. |
|
Klassifiziert Elemente in einem Bereich in zwei disjunkte Sätze, wenn diese Elemente ein unäres Prädikat erfüllen, das die vorausgeht, die es nicht erfüllen können und behält die relative Reihenfolge der übereinstimmenden Elemente bei. |
|
Ordnet die Elemente in einem angegebenen Bereich in eine nondescending Reihenfolge oder gemäß einem Sortierkriterium an, das durch ein binäres Prädikat angegeben ist und behält die relative Reihenfolge der übereinstimmenden Elemente bei. |
|
Tauscht die Werte der Elemente zwischen zwei Typen Objekte aus und weist den Inhalt des ersten Objekts bis des zweiten Objekts und den Inhalt des zweiten zum ersten zu. |
|
Tauscht die Elemente eines Bereichs mit den Elementen von anderen, - groß Bereich mit gleicher aus. |
|
Wendet einen angegebenen Funktionsobjekt an jedes Element in einem Quellbereich oder einem Paar von Elementen aus zwei Quellbereichen und kopiert die Rückgabewerte des Funktionsobjekts in einen Zielbereich. |
|
Entfernt doppelte Elemente, die neben einander in einem angegebenen Bereich sind. |
|
Kopiert Elemente aus einem Quellbereich in einen Zielbereich außer doppelte Elemente, die nebeneinander angeordnet sind. |
|
Sucht die Position des ersten Elements in einem geordneten Bereich, der hat einen Wert angegeben wird, der größer als ein angegebener Wert ist, in dem Sortierkriterium möglicherweise durch ein binäres Prädikat. |
Siehe auch
Referenz
Threadsicherheit in der C++-Standardbibliothek