Partager via


<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

adjacent_find

Recherche deux éléments adjacents qui ont la même valeur ou qui répondent à une condition spécifiée.

all_of

Retourne true lorsqu'une condition est remplie pour chaque élément de la plage spécifiée.

any_of

Retourne true lorsqu'une condition est remplie au moins une fois dans la plage d'éléments spécifiée.

binary_search

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.

copy

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.

copy_backward

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.

copy_if

Copie tous les éléments d'une plage donnée qui renvoient la valeur true pour une condition spécifiée.

copy_n

Copie un nombre spécifié d'éléments.

count

Retourne le nombre d'éléments d'une plage dont les valeurs correspondent à une valeur spécifiée.

count_if

Retourne le nombre d'éléments d'une plage dont les valeurs correspondent à une condition spécifiée.

equal

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.

equal_range

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.

fill

Affecte la même nouvelle valeur à chaque élément d'une plage spécifiée.

fill_n

Assigne une nouvelle valeur à un nombre spécifié d'éléments d'une plage qui commence par un élément particulier.

find

Recherche la position de la première occurrence d'un élément d'une plage ayant une valeur spécifiée.

find_end

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.

find_first_of

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.

find_if

Recherche la position de la première occurrence d'un élément d'une plage qui répond à une condition spécifiée.

find_if_not

Retourne le premier élément d'une plage spécifiée qui ne répond pas à une condition.

for_each

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.

generate

Assigne les valeurs générées par un objet de fonction à chaque élément d'une plage.

generate_n

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.

includes

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.

inplace_merge

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.

is_heap

Retourne true si les éléments d'une plage spécifiée forment un tas.

is_heap_until

Retourne true si la plage spécifiée forme un tas jusqu'au dernier élément.

is_partitioned

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.

is_permutation

Détermine si les éléments d'une plage donnée forment une permutation valide.

is_sorted

Retourne true si les éléments de la plage spécifiée sont triés.

is_sorted_until

Retourne true si les éléments de la plage spécifiée sont triés.

iter_swap

Échange deux valeurs référencées par une paire d'itérateurs spécifiés.

lexicographical_compare

Compare deux séquences, élément par élément, pour déterminer lequel est inférieur à l'autre.

lower_bound

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.

make_heap

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.

max

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.

max_element

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.

merge

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.

min

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.

min_element

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.

minmax

Compare deux paramètres d'entrée et les retourne en tant que paire, du plus petit au plus grand.

minmax_element

Exécute le travail effectué par min_element et max_element au sein d'un même appel.

mismatch

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.

<alg> move

Déplace les éléments associés à une plage spécifiée.

move_backward

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.

next_permutation

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.

none_of

Retourne true lorsqu'une condition n'est remplie par aucun des éléments d'une plage spécifiée.

nth_element

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.

partial_sort

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.

partial_sort_copy

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é.

partition

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.

partition_copy

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.

partition_point

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.

pop_heap

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.

prev_permutation

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.

push_heap

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.

random_shuffle

Réorganise une séquence de N éléments d'une plage en N! dispositions possibles, sélectionnées de manière aléatoire.

remove

É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.

remove_copy

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.

remove_copy_if

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.

remove_if

É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.

replace

Examine tous les éléments d'une plage et les remplace s'ils correspondent à une valeur spécifiée.

replace_copy

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.

replace_copy_if

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.

replace_if

Examine tous les éléments d'une plage et les remplace s'ils répondent à un prédicat spécifié.

reverse

Inverse l'ordre des éléments d'une plage.

reverse_copy

Inverse l'ordre des éléments d'une plage source, tout en les copiant dans une plage de destination.

rotate

Échange les éléments de deux plages adjacentes.

rotate_copy

Échange les éléments de deux plages adjacentes au sein d'une plage source et copie le résultat dans une plage de destination.

search

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é.

search_n

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é.

set_difference

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.

set_intersection

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.

set_symmetric_difference

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.

set_union

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.

sort

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.

shuffle

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.

sort_heap

Convertit un tas en une plage triée.

stable_partition

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é.

stable_sort

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

É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.

swap_ranges

Échange les éléments d'une plage avec ceux d'une autre plage de taille égale.

transformation

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.

unique

Supprime les éléments en double adjacents dans une plage spécifiée.

unique_copy

Copie les éléments d'une plage source dans une plage de destination, à l'exception des éléments en double adjacents.

upper_bound

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)

Autres ressources

Fichiers d'en-tête de bibliothèque standard C++