<algorithm>
Définit les fonctions de modèle du conteneur STL qui exécutent des algorithmes.
(see relevant links below for specific algorithm syntax)
Notes
Les algorithmes STL sont génériques, car ils peuvent traiter diverses structures de données. Les structures de données qu'ils peuvent traiter incluent non seulement les classes de conteneur STL, telles que vector et list, mais aussi les structures de données définies par programme et les tableaux d'éléments qui répondent aux exigences d'un algorithme en particulier. Les algorithmes STL atteignent ce niveau de généralité en parcourant les éléments d'un conteneur indirectement, via des itérateurs.
Les algorithmes STL traitent les plages d'itérateurs qui sont généralement spécifiées par leur position de début ou de fin. Les plages référencées doivent être valides, c'est-à-dire que tous les pointeurs de ces plages doivent pouvoir être déréférencés et, que dans les séquences de chaque plage, la dernière position doit être accessible depuis la première par incrémentation.
Les algorithmes STL étendent les actions prises en charge par les opérations et les fonctions membres de chaque conteneur STL, et permettent, entre autres choses, l'utilisation simultanée de plusieurs types d'objets conteneurs. Deux suffixes ont été utilisés pour transmettre des informations concernant l'usage des algorithmes.
Le suffixe _if indique que l'algorithme est utilisé avec des objets de fonction opérant sur les valeurs des éléments plutôt que sur les éléments eux-mêmes. L'algorithme find_if recherche les éléments dont les valeurs répondent au critère spécifié par un objet de fonction, et l'algorithme find recherche une valeur particulière.
Le suffixe _copy indique que l'algorithme manipule les valeurs des éléments, mais copie également les valeurs modifiées dans une plage de destination. L'algorithme reverse inverse l'ordre des éléments d'une plage, et l'algorithme reverse_copy copie également le résultat dans une plage de destination.
Les algorithmes STL sont généralement classés par groupes selon leur usage ou leurs exigences. Il s'agit notamment des algorithmes de modification qui changent la valeur des éléments, contrairement aux autres algorithmes. Les algorithmes de mutation modifient l'ordre des éléments, mais pas leurs valeurs. Les algorithmes de suppression peuvent éliminer les éléments d'une plage ou d'une copie d'une plage. Les algorithmes de tri modifient l'ordre des éléments d'une plage de plusieurs façons, et les algorithmes de plages triées agissent uniquement sur les plages dont les éléments ont été triés d'une certaine manière.
Les algorithmes STL numériques fournis pour le traitement numérique possèdent leur propre fichier d'en-tête <numeric>. Les objets de fonction et les adaptateurs, quant à eux, sont définis dans l'en-tête <functional>. Les objets de fonction qui renvoient des valeurs booléennes sont appelés prédicats. Le prédicat binaire par défaut est le operator< de comparaison. En général, les éléments qui sont triés ne doivent pas être équivalents, afin que, avec deux éléments quelconques donnés, il soit possible de déterminer qu'ils sont équivalents (dans le sens où l'un n'est pas inférieur à l'autre) ou que l'un est inférieur à l'autre. Cela entraîne un tri des éléments non équivalents.
Fonctions
Recherche deux éléments adjacents qui ont la même valeur ou qui répondent à une condition spécifiée. |
|
Retourne true lorsqu'une condition est remplie pour chaque élément de la plage spécifiée. |
|
Retourne true lorsqu'une condition est remplie au moins une fois dans la plage d'éléments spécifiée. |
|
Teste si un élément d'une plage triée est égal à une valeur spécifiée ou équivalent, selon une condition spécifiée par un prédicat binaire. |
|
Assigne les valeurs des éléments d'une plage source à une plage de destination, en procédant à une itération via la séquence source d'éléments et en leur assignant de nouvelles positions, du haut vers le bas. |
|
Assigne les valeurs des éléments d'une plage source à une plage de destination, en procédant à une itération via la séquence source d'éléments et en leur assignant de nouvelles positions vers le haut. |
|
Copie tous les éléments d'une plage donnée qui renvoient la valeur true pour une condition spécifiée. |
|
Copie un nombre spécifié d'éléments. |
|
Retourne le nombre d'éléments d'une plage dont les valeurs correspondent à une valeur spécifiée. |
|
Retourne le nombre d'éléments d'une plage dont les valeurs correspondent à une condition spécifiée. |
|
Compare deux plages, élément par élément, à la recherche d'une égalité ou d'une équivalence, selon une condition spécifiée par un prédicat binaire. |
|
Recherche une paire de positions dans une plage triée. La première inférieure ou équivalente à la position d'un élément spécifié, et la deuxième supérieure à la position de cet élément. L'équivalence ou le tri utilisés pour établir des positions dans la séquence peuvent être spécifiés par un prédicat binaire. |
|
Affecte la même nouvelle valeur à chaque élément d'une plage spécifiée. |
|
Assigne une nouvelle valeur à un nombre spécifié d'éléments d'une plage qui commence par un élément particulier. |
|
Recherche la position de la première occurrence d'un élément d'une plage ayant une valeur spécifiée. |
|
Recherche dans une plage la dernière sous-séquence qui est identique à une séquence spécifiée ou qui est équivalente, selon une condition spécifiée par un prédicat binaire. |
|
Recherche la première occurrence parmi plusieurs valeurs d'une plage cible, ou la première occurrence parmi plusieurs éléments qui sont équivalents, selon une condition spécifiée par un prédicat binaire, à un ensemble d'éléments spécifiés. |
|
Recherche la position de la première occurrence d'un élément d'une plage qui répond à une condition spécifiée. |
|
Retourne le premier élément d'une plage spécifiée qui ne répond pas à une condition. |
|
Applique un objet de fonction spécifié à chaque élément d'une plage, du haut vers le bas, et retourne l'objet de la fonction. |
|
Assigne les valeurs générées par un objet de fonction à chaque élément d'une plage. |
|
Assigne les valeurs générées par un objet de fonction à un nombre spécifié d'éléments d'une plage, et retourne à la position située juste après la dernière valeur assignée. |
|
Teste si une plage triée contient tous les éléments d'une autre plage triée. Le critère de tri ou d'équivalence entre les éléments peut être spécifié par un prédicat binaire. |
|
Regroupe les éléments de deux plages triées consécutives au sein d'une même plage triée. Le critère de tri peut être spécifié par un prédicat binaire. |
|
Retourne true si les éléments d'une plage spécifiée forment un tas. |
|
Retourne true si la plage spécifiée forme un tas jusqu'au dernier élément. |
|
Retourne true si tous les éléments d'une plage qui renvoient la valeur true pour une condition donnée, se trouvent avant les éléments qui renvoient la valeur false. |
|
Détermine si les éléments d'une plage donnée forment une permutation valide. |
|
Retourne true si les éléments de la plage spécifiée sont triés. |
|
Retourne true si les éléments de la plage spécifiée sont triés. |
|
Échange deux valeurs référencées par une paire d'itérateurs spécifiés. |
|
Compare deux séquences, élément par élément, pour déterminer lequel est inférieur à l'autre. |
|
Recherche la position du premier élément d'une plage triée dont la valeur est supérieure ou équivalente à une valeur spécifiée. Le critère de tri peut être spécifié par un prédicat binaire. |
|
Convertit les éléments d'une plage spécifiée en un tas, dans lequel le premier élément est le plus grand, et pour lequel un critère de tri peut être spécifié à l'aide d'un prédicat binaire. |
|
Compare deux objets et retourne le plus grand des deux. Un critère de tri peut être spécifié à l'aide d'un prédicat binaire. |
|
Recherche la première occurrence du plus grand élément dans une plage spécifiée. Un critère de tri peut être spécifié par un prédicat binaire. |
|
Regroupe tous les éléments de deux plages sources triées au sein d'une même plage de destination triée. Le critère de tri peut être spécifié par un prédicat binaire. |
|
Compare deux objets et retourne le plus petit des deux. Un critère de tri peut être spécifié à l'aide d'un prédicat binaire. |
|
Recherche la première occurrence du plus petit élément dans une plage spécifiée. Un critère de tri peut être spécifié par un prédicat binaire. |
|
Compare deux paramètres d'entrée et les retourne en tant que paire, du plus petit au plus grand. |
|
Exécute le travail effectué par min_element et max_element au sein d'un même appel. |
|
Compare deux plages, élément par élément, à la recherche d'une égalité ou d'une équivalence, selon une condition spécifiée par un prédicat binaire, et recherche la première position où se trouve une différence. |
|
Déplace les éléments associés à une plage spécifiée. |
|
Déplace les éléments d'un itérateur vers un autre. Le déplacement commence par le dernier élément d'une plage spécifiée, et se termine par le premier élément de cette plage. |
|
Réorganise les éléments d'une plage, de sorte que le tri d'origine soit remplacé par la prochaine permutation plus élevée d'un point de vue lexicographique (s'il en existe une). La notion de "prochaine" peut être définie à l'aide d'un prédicat binaire. |
|
Retourne true lorsqu'une condition n'est remplie par aucun des éléments d'une plage spécifiée. |
|
Divise une plage d'éléments, en recherchant le nième élément de la séquence dans la plage, de sorte que tous les éléments le précédant lui soient inférieurs ou égaux, et que tous les éléments qui le suivent lui soient supérieurs ou égaux. |
|
Réorganise un nombre spécifié d'éléments plus petits au sein d'une plage, dans un ordre non décroissant, ou selon un critère de tri spécifié par un prédicat binaire. |
|
Copie les éléments d'une plage source dans une plage de destination. Les éléments sources sont triés par ordre croissant ou selon un autre prédicat binaire spécifié. |
|
Répartit les éléments d'une plage en deux ensembles disjoints. Les éléments qui répondent à un prédicat unaire doivent précéder ceux qui n'y répondent pas. |
|
Copie les éléments qui renvoient la valeur true dans une destination pour une condition donnée, et qui renvoient la valeur false dans une autre destination. Les éléments doivent provenir d'une plage spécifiée. |
|
Retourne le premier élément d'une plage donnée qui ne répond pas à une condition. Les éléments sont triés de sorte que ceux qui répondent à la condition précèdent ceux qui n'y répondent pas. |
|
Retire le plus grand élément du début du tas et le place à l'avant-dernière position de la plage, puis forme un nouveau tas à partir des éléments restants. |
|
Réorganise les éléments d'une plage, de sorte que le tri d'origine soit remplacé par la prochaine permutation plus élevée d'un point de vue lexicographique (s'il en existe une). La notion de "prochaine" peut être définie à l'aide d'un prédicat binaire. |
|
Ajoute un élément qui se trouve à la fin d'une plage à un tas existant, constitué des éléments précédents de la plage. |
|
Réorganise une séquence de N éléments d'une plage en N! dispositions possibles, sélectionnées de manière aléatoire. |
|
Élimine une valeur spécifiée d'une plage donnée sans modifier l'ordre des éléments restants, et retourne la fin d'une nouvelle plage exempte de la valeur spécifiée. |
|
Copie les éléments d'une plage source vers une plage de destination. Les éléments ayant une valeur spécifiée ne sont pas copiés. L'ordre des éléments restants n'est pas modifié et la fin d'une nouvelle plage de destination est retournée. |
|
Copie les éléments d'une plage source vers une plage de destination. Les éléments répondant à un prédicat ne sont pas copiés. L'ordre des éléments restants n'est pas modifié et la fin d'une nouvelle plage de destination est retournée. |
|
Élimine d'une plage donnée les éléments qui répondent à un prédicat, sans modifier l'ordre des éléments restants et en retournant la fin d'une nouvelle plage exempte de la valeur spécifiée. |
|
Examine tous les éléments d'une plage et les remplace s'ils correspondent à une valeur spécifiée. |
|
Examine tous les éléments d'une plage source et les remplace s'ils correspondent à une valeur spécifiée, tout en copiant le résultat dans une nouvelle plage de destination. |
|
Examine tous les éléments d'une plage source et les remplace s'ils répondent à un prédicat, tout en copiant le résultat dans une nouvelle plage de destination. |
|
Examine tous les éléments d'une plage et les remplace s'ils répondent à un prédicat spécifié. |
|
Inverse l'ordre des éléments d'une plage. |
|
Inverse l'ordre des éléments d'une plage source, tout en les copiant dans une plage de destination. |
|
Échange les éléments de deux plages adjacentes. |
|
Échange les éléments de deux plages adjacentes au sein d'une plage source et copie le résultat dans une plage de destination. |
|
Recherche la première occurrence d'une séquence au sein d'une plage cible dont les éléments sont égaux à ceux d'une séquence d'éléments donnée ou dont les éléments sont équivalents à ceux d'une séquence donnée, selon un prédicat binaire spécifié. |
|
Recherche la première sous-séquence d'une plage dont un nombre spécifié d'éléments ont une valeur particulière ou une relation à cette valeur, selon un prédicat binaire spécifié. |
|
Regroupe tous les éléments qui appartiennent à une plage source triée, mais pas à une autre plage source triée, en une même plage de destination triée. Un critère de tri peut être spécifié par un prédicat binaire. |
|
Regroupe tous les éléments de deux plages sources triées au sein d'une même plage de destination triée. Le critère de tri peut être spécifié par un prédicat binaire. |
|
Regroupe tous les éléments qui appartiennent à l'une de deux plages sources triées (mais pas aux deux) au sein d'une même plage de destination triée. Le critère de tri peut être spécifié par un prédicat binaire. |
|
Regroupe tous les éléments qui appartiennent au moins à l'une de deux plages sources triées au sein d'une même plage de destination triée. Le critère de tri peut être spécifié par un prédicat binaire. |
|
Réorganise les éléments d'une plage spécifiée, dans un ordre non décroissant, ou selon un critère de tri spécifié par un prédicat binaire. |
|
Lit de façon aléatoire (réorganise) les éléments pour une plage donnée à l'aide d'un générateur de nombres aléatoires. |
|
Convertit un tas en une plage triée. |
|
Classe les éléments d'une plage en deux ensembles disjoints. Les éléments qui répondent à un prédicat unaire doivent précéder ceux qui n'y répondent pas, et l'ordre relatif des éléments équivalents doit être conservé. |
|
Classe les éléments d'une plage spécifiée dans un ordre non décroissant, ou selon un critère de tri spécifié par un prédicat binaire, et conserve l'ordre relatif des éléments équivalents. |
|
Échange les valeurs des éléments de deux types d'objets, en assignant le contenu du premier objet au deuxième objet, et le contenu du deuxième au premier. |
|
Échange les éléments d'une plage avec ceux d'une autre plage de taille égale. |
|
Applique un objet de fonction spécifié à chaque élément d'une plage source ou à une paire d'éléments de deux plages sources, et copie les valeurs renvoyées de l'objet de fonction dans une plage de destination. |
|
Supprime les éléments en double adjacents dans une plage spécifiée. |
|
Copie les éléments d'une plage source dans une plage de destination, à l'exception des éléments en double adjacents. |
|
Recherche la position du premier élément d'une plage triée dont la valeur est supérieure à une valeur spécifiée. Le critère de tri peut être spécifié par un prédicat binaire. |
Voir aussi
Référence
Sécurité des threads dans la bibliothèque standard C++
Bibliothèque STL (Standard Template Library)