Université Sultan Moulay Slimane
Faculté Polydisciplinaire Khouribga
Mathématiques, Informatique et Physique (MIP)
Programmation Orientée Objet (C++)
Chapitre 6 : Bibliothèque STL (Partie 2)
Pr. Ibtissam Bakkouri
[email protected] Année Universitaire : 2024/2025
Conteneurs STL
Itérateurs
Manipulation des Conteneurs avec les Itérateurs
Conclusion
Plan
1 Conteneurs STL
2 Itérateurs
3 Manipulation des Conteneurs avec les Itérateurs
4 Conclusion
Pr. Ibtissam Bakkouri Faculté Polydisciplinaire - Khouribga 2/24
Conteneurs STL
Itérateurs
Manipulation des Conteneurs avec les Itérateurs
Conclusion
Conteneurs STL
Conteneurs STL :
Les conteneurs STL sont des structures de données prêtes à
l’emploi.
Ils permettent de stocker et manipuler des collections d’objets.
Exemples : vector, list, deque, set, map.
Pr. Ibtissam Bakkouri Faculté Polydisciplinaire - Khouribga 3/24
Conteneurs STL
Itérateurs
Manipulation des Conteneurs avec les Itérateurs
Conclusion
Conteneur vector
Description :
Tableau dynamique redimensionnable.
Accès rapide par indice.
Exemple
vector<int> v = {1, 2, 3};
v.push_back(4);
cout « v[2]; // Affiche 3
Pr. Ibtissam Bakkouri Faculté Polydisciplinaire - Khouribga 4/24
Conteneurs STL
Itérateurs
Manipulation des Conteneurs avec les Itérateurs
Conclusion
Conteneur list
Description :
Liste doublement chaînée.
Insertion/suppression efficace n’importe où.
Exemple
list<string> noms;
noms.push_back("Ahmed");
noms.push_front("Amine");
Pr. Ibtissam Bakkouri Faculté Polydisciplinaire - Khouribga 5/24
Conteneurs STL
Itérateurs
Manipulation des Conteneurs avec les Itérateurs
Conclusion
Conteneur deque
Description :
File double : ajout/retrait aux deux extrémités.
Plus flexible que vector.
Exemple
deque<int> d;
d.push_front(1);
d.push_back(2);
Pr. Ibtissam Bakkouri Faculté Polydisciplinaire - Khouribga 6/24
Conteneurs STL
Itérateurs
Manipulation des Conteneurs avec les Itérateurs
Conclusion
Conteneur set
Description :
Ensemble trié d’éléments uniques.
Pas d’accès direct par indice.
Exemple
set<int> s;
s.insert(10);
s.insert(5);
s.insert(10); // Ignoré car déjà présent
Pr. Ibtissam Bakkouri Faculté Polydisciplinaire - Khouribga 7/24
Conteneurs STL
Itérateurs
Manipulation des Conteneurs avec les Itérateurs
Conclusion
Conteneur map
Description :
Table associative clé-valeur.
Triée selon les clés.
Exemple
map<string, int> age;
age["Ahmed"] = 25;
cout « age["Ahmed"];
Pr. Ibtissam Bakkouri Faculté Polydisciplinaire - Khouribga 8/24
Conteneurs STL
Itérateurs
Manipulation des Conteneurs avec les Itérateurs
Conclusion
Conteneur unordered_map
Description :
Table de hachage pour accès rapide.
Non triée.
Exemple
unordered_map<string, int> scores;
scores["Math"] = 80;
scores["Info"] = 90;
Pr. Ibtissam Bakkouri Faculté Polydisciplinaire - Khouribga 9/24
Conteneurs STL
Itérateurs
Manipulation des Conteneurs avec les Itérateurs
Conclusion
Comparaison des Conteneurs
Choisir le bon conteneur selon le besoin :
vector : accès rapide par index.
list : insertion/suppression au milieu.
set : éléments triés et uniques.
map : association clé-valeur triée.
unordered_map : clé-valeur non triée mais plus rapide.
Pr. Ibtissam Bakkouri Faculté Polydisciplinaire - Khouribga 10/24
Conteneurs STL
Itérateurs
Manipulation des Conteneurs avec les Itérateurs
Conclusion
Qu’est-ce qu’un itérateur ?
Qu’est-ce qu’un itérateur ?
Un itérateur est un objet qui permet de parcourir une
structure de données (comme un pointeur).
Utilisé pour accéder aux éléments des conteneurs STL.
Compatible avec les algorithmes génériques de la STL.
Pr. Ibtissam Bakkouri Faculté Polydisciplinaire - Khouribga 11/24
Conteneurs STL
Itérateurs
Manipulation des Conteneurs avec les Itérateurs
Conclusion
Syntaxe de base d’un itérateur
Exemple avec vector<int>:
Code
vector<int> v = {1, 2, 3, 4};
vector<int>::iterator it;
for (it = v.begin(); it != v.end(); ++it) {
cout « *it « " ";
}
Remarques :
v.begin() retourne un itérateur au début du conteneur.
*it permet d’accéder à la valeur pointée.
Pr. Ibtissam Bakkouri Faculté Polydisciplinaire - Khouribga 12/24
Conteneurs STL
Itérateurs
Manipulation des Conteneurs avec les Itérateurs
Conclusion
Types d’Itérateurs en STL
Types principaux :
InputIterator : lecture en avant.
OutputIterator : écriture en avant.
ForwardIterator : lecture/écriture en avant.
BidirectionalIterator : lecture/écriture dans les deux
sens.
RandomAccessIterator : accès direct comme un tableau.
Pr. Ibtissam Bakkouri Faculté Polydisciplinaire - Khouribga 13/24
Conteneurs STL
Itérateurs
Manipulation des Conteneurs avec les Itérateurs
Conclusion
Exemple : Itérateurs avec list
Utilisation avec une liste chaînée :
Code
list<string> noms;
noms.push_back("Ahmed");
noms.push_back("Ali");
for (list<string>::iterator it = noms.begin(); it !=
noms.end(); ++it) {
cout « *it « endl;
}
Avantage : compatible avec les conteneurs non indexés comme
list.
Pr. Ibtissam Bakkouri Faculté Polydisciplinaire - Khouribga 14/24
Conteneurs STL
Itérateurs
Manipulation des Conteneurs avec les Itérateurs
Conclusion
Itérateurs et Algorithmes STL
Les itérateurs sont utilisés avec les fonctions de la STL :
Exemple avec sort()
vector<int> v = {4, 2, 1, 3};
sort(v.begin(), v.end());
for (auto it = v.begin(); it != v.end(); ++it) {
cout « *it « " ";
}
Remarques :
Les algorithmes STL prennent souvent des paires d’itérateurs.
Compatible avec tous les conteneurs disposant d’itérateurs
valides.
Pr. Ibtissam Bakkouri Faculté Polydisciplinaire - Khouribga 15/24
Conteneurs STL
Itérateurs
Manipulation des Conteneurs avec les Itérateurs
Conclusion
Pourquoi utiliser les itérateurs ?
Avantages des itérateurs :
Accès générique aux éléments d’un conteneur.
Compatible avec tous les conteneurs STL.
Permet une manipulation simple et cohérente des données.
Facilite l’utilisation des algorithmes STL.
Pr. Ibtissam Bakkouri Faculté Polydisciplinaire - Khouribga 16/24
Conteneurs STL
Itérateurs
Manipulation des Conteneurs avec les Itérateurs
Conclusion
Afficher un vecteur avec un itérateur
Code :
Exemple
vector<int> v = {10, 20, 30};
for (vector<int>::iterator it = v.begin(); it !=
v.end(); ++it) {
cout « *it « " ";
}
Remarque : *it accède à la valeur pointée par l’itérateur.
Pr. Ibtissam Bakkouri Faculté Polydisciplinaire - Khouribga 17/24
Conteneurs STL
Itérateurs
Manipulation des Conteneurs avec les Itérateurs
Conclusion
Modifier un vecteur avec un itérateur
Code :
Exemple
vector<int> v = {1, 2, 3};
for (vector<int>::iterator it = v.begin(); it !=
v.end(); ++it) {
*it *= 2;
}
Résultat attendu : Le vecteur contient maintenant {2, 4, 6}.
Pr. Ibtissam Bakkouri Faculté Polydisciplinaire - Khouribga 18/24
Conteneurs STL
Itérateurs
Manipulation des Conteneurs avec les Itérateurs
Conclusion
Utilisation des itérateurs avec une list
Code :
Exemple
list<string> noms;
noms.push_back("Ahmed");
noms.push_back("Ali");
for (list<string>::iterator it = noms.begin(); it !=
noms.end(); ++it) {
cout « *it « endl;
}
Info : list n’est pas indexée, donc les itérateurs sont essentiels.
Pr. Ibtissam Bakkouri Faculté Polydisciplinaire - Khouribga 19/24
Conteneurs STL
Itérateurs
Manipulation des Conteneurs avec les Itérateurs
Conclusion
Supprimer un élément en utilisant un itérateur
Code :
Exemple avec vector
vector<int> v = {1, 2, 3, 4, 5};
for (auto it = v.begin(); it != v.end(); ) {
if (*it % 2 == 0)
it = v.erase(it);
else ++it;
}
Résultat : Seuls les nombres impairs restent.
Pr. Ibtissam Bakkouri Faculté Polydisciplinaire - Khouribga 20/24
Conteneurs STL
Itérateurs
Manipulation des Conteneurs avec les Itérateurs
Conclusion
Parcourir un conteneur à l’envers
Code :
Exemple avec vector
vector<char> lettres = {’a’, ’b’, ’c’};
for (vector<char>::reverse_iterator rit =
lettres.rbegin(); rit != lettres.rend(); ++rit) {
cout « *rit « " ";
}
Résultat : Affiche c b a
Pr. Ibtissam Bakkouri Faculté Polydisciplinaire - Khouribga 21/24
Conteneurs STL
Itérateurs
Manipulation des Conteneurs avec les Itérateurs
Conclusion
Itérateurs avec map
Code :
Exemple avec map
map<string, int> notes;
notes["Alice"] = 15;
notes["Bob"] = 12;
for (map<string, int>::iterator it = notes.begin();
it != notes.end(); ++it) {
cout « it->first « ": " « it->second « endl;
}
Remarque : Utiliser it->first et it->second.
Pr. Ibtissam Bakkouri Faculté Polydisciplinaire - Khouribga 22/24
Conteneurs STL
Itérateurs
Manipulation des Conteneurs avec les Itérateurs
Conclusion
Manipulation via Itérateurs
Les itérateurs permettent de parcourir, modifier, et manipuler
les conteneurs STL.
Ils fonctionnent avec tous les types de conteneurs (vector, list,
map...).
Leur utilisation rend le code plus générique et modulaire.
Indispensables pour utiliser les algorithmes STL efficacement.
Pr. Ibtissam Bakkouri Faculté Polydisciplinaire - Khouribga 23/24
Conteneurs STL
Itérateurs
Manipulation des Conteneurs avec les Itérateurs
Conclusion
Points Clés à Retenir
La bibliothèque STL est un pilier fondamental de la program-
mation moderne en C++.
Les conteneurs STL (vector, list, map, etc.) facilitent la gestion
efficace des collections de données.
Les itérateurs permettent de parcourir et manipuler les éléments
de manière générique.
Les templates assurent une grande flexibilité et réutilisabilité du
code.
Pr. Ibtissam Bakkouri Faculté Polydisciplinaire - Khouribga 24/24