0% ont trouvé ce document utile (0 vote)
32 vues24 pages

POO Ch7

Le document présente la bibliothèque STL en C++, en se concentrant sur les conteneurs tels que vector, list, deque, set, map et unordered_map, ainsi que sur l'utilisation des itérateurs pour manipuler ces conteneurs. Il décrit les caractéristiques de chaque type de conteneur et les avantages des itérateurs pour parcourir et modifier les données. Enfin, il souligne l'importance de la bibliothèque STL dans la programmation moderne en C++.

Transféré par

khalidmrjn99
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
32 vues24 pages

POO Ch7

Le document présente la bibliothèque STL en C++, en se concentrant sur les conteneurs tels que vector, list, deque, set, map et unordered_map, ainsi que sur l'utilisation des itérateurs pour manipuler ces conteneurs. Il décrit les caractéristiques de chaque type de conteneur et les avantages des itérateurs pour parcourir et modifier les données. Enfin, il souligne l'importance de la bibliothèque STL dans la programmation moderne en C++.

Transféré par

khalidmrjn99
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

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

Vous aimerez peut-être aussi