Annexe B
Algorithmes de la bibliothèque standard STL
Hansel, G., Passeport pour C++ Concepts et mise en pratique. Chap. 23 et annexe A,
1999.
Cay Horstmann & Timothy Budd, La Bible C++. John Wiley & Sons, Inc., 2004, 1230p.
On retrouve aussi dans la bibliothèque standard STL un jeu de fonctions appelées
algorithmes. Pour ces fonctions, l’accès aux données contenues dans un conteneur
s’effectue exclusivement par le biais d’itérateurs. Les algorithmes sont indépendants des
classes mises en jeu dans les conteneurs. De plus, un pointeur usuel pouvant être
considéré comme un cas particulier d’itérateur, les algorithmes sont également utilisables
pour les tableaux usuels.
Pour utiliser un algorithme, il faut préalablement inclure le fichier <algorithm>.
Dans l’annexe A de la référence de Hansel citée plus haut, on retrouve une description
complète des algorithmes de la STL. C’est aussi le cas des deux ouvrages suivants :
Bjarne Stroustrup, The C++ Programming Language, Special Ed., Addison-
Wesley, 2000.
Stanley B. Lippman et Josée Lajoie, C++ Primer, 3rd ed., Addison-Wesley, 1998.
La bibliothèque standard contient plusieurs douzaines d’algorithmes génériques. Nous
étudierons ici que les plus fréquents et les plus utiles. Pour simplifier la présentation de
ces fonctions, celles-ci sont réparties en plusieurs catégories.
A. Algorithmes d’initialisation
Ce sont des algorithmes servant principalement à initialiser une séquence.
Un conteneur peut être initialisé par remplissage (initialiser avec une même valeur fixe),
par copie (dupliquer des valeurs depuis un conteneur pour en remplir un second) ou par
génération (exécuter une fonction de façon répétée et employer les valeurs obtenues pour
initialiser un conteneur).
Remplissage :
Deux algorithmes permettent de remplir un conteneur. Le premier utilise comme
arguments une plage d’itérateurs et une valeur, puis affecte à chaque élément de la plage
la valeur spécifiée.
vector<int> a(10);
fill(a.begin(), a.end(), 1);
Le deuxième algorithme reçoit un itérateur, un compteur entier et une valeur. Il initialise
le nombre de positions spécifié par le compteur avec la valeur donnée.