Chapitre 4 (21 - 22) - Les Collections - Partie1
Chapitre 4 (21 - 22) - Les Collections - Partie1
Chapitre 4 (21 - 22) - Les Collections - Partie1
Niveau : 2A / 2P
Equipe C++
Enseignantes :
1
Plan
Classe string
La Notion de conteneurs
• Le C++ possède une bibliothèque standard (SL pour Standard Library) qui est
composée de 3 composants principaux ::
• La STL : Standard Template Library
• Les autres outils de la bibliothèque standard C++
• Les bibliothèques C
• STL contient, entre autre:
• Des classes (String , array, …)
• Des conteneurs pour gérer des collections d’objets ( les tableaux (vector), les listes (list), les
ensembles (set), les piles (stack) )
• Des algorithmes ( recherche(find),tri(sort), …)
• Des classes d'itérateurs dans les collections ( iterator)
3
Classe string
● STL fournit une classe standard pour la création et manipulation des chaînes
de caractères : la classe string.
● Un string ne représente pas un pointeur vers une chaîne de caractères
mais un objet. Contrairement aux chaînes de caractères char * propres au
C, les objets de la classe string ne se terminent pas nécessairement par un
caractère null '\0'.
● Un objet de type string contient, à un instant donné, une suite formée d'un
nombre quelconque de caractères. Sa taille peut évoluer dynamiquement au
fil de l'exécution du programme.
4
Classe string
● Constructeur:
● La classe string dispose de plusieurs constructeurs :
● La classe string dispose d'autres constructeurs permettant d'initialiser une chaîne lors de sa construction :
5
Classe string
○ Les opérateurs <<, >>, +, +=, =, ==, !=, <=, >=, <, > sont surchargés pour la
classe string.
6
Classe array
• Std::array est une version de classe tableau C classique (tableau statique). Cela signifie
que sa taille est fixée au moment de la compilation et qu’il sera alloué en seul bloc.
• Avant utilisation, il faut inclure :
• Déclaration d’un tableau de taille 4:
• Pour connaître la taille:
• Pouvons fonctionne avec []
• Pour parcourir et afficher les éléments d’un tableau:
7
Les Conteneurs
• Les conteneurs sont les classes renfermant les données manipulées par la STL.
• Un conteneur (container) est un objet qui contient d’autres objets.
• On distingue différents types de conteneurs :
Les conteneurs de séquence :
➔ vector : accès direct à n’importe quel élément
● Très proche des tableaux statiques (mémoire contiguë)
● Pré-allouez de la place pour les futures éléments (size()/capacity())
● Très coûteux en insertion et suppression
● Adapté pour la recherche d’un élément.
➔ list : accès séquentiel avant arrière.
● Utilisant le principe de double chaîne ( chaque élément nécessite un espace pour les pointeurs vers les éléments
suivant et précédent de la liste.)
● Plus efficace pour les opérations d’insertion et de suppression
● La recherche se fait dans un ordre séquentiel
➔ Deque : associe les 2 précédents. 8
Les Conteneurs
9
Tableaux dynamiques( Les Vecteurs)
#include<vector>
vector <int>montab;
// créer un tableau
d'entiers vide
montab.push_back(1);
montab.push_back(2);
montab.push_back(3);
10
Tableaux dynamiques( Les Vecteurs)
Front back
11
Tableaux dynamiques( Les Vecteurs)
Front back
Front back
Front back
14
Tableaux dynamiques( Les Vecteurs)
15