Chapitre 4 (21 - 22) - Les Collections - Partie1

Télécharger au format pptx, pdf ou txt
Télécharger au format pptx, pdf ou txt
Vous êtes sur la page 1sur 15

Chapitre 4 : Les Conteneurs STL(Partie1)

Niveau : 2A / 2P
Equipe C++
Enseignantes :

Mme Soumaya Nheri

Année universitaire :2021-2022

1
Plan

La librairie standard C++

Classe string

Tableaux statique (classe array)

La Notion de conteneurs

Tableaux dynamiques (Les vecteurs)


La librairie standard C++

• 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 :

● La classe string dispose aussi d’un constructeur de recopie :

5
Classe string

● Opérateurs et fonctions usuelles:

○ Les opérateurs <<, >>, +, +=, =, ==, !=, <=, >=, <, > sont surchargés pour la
classe string.

○ Fonctions fréquemment utilisées :


■ size() : fournit la taille d’une chaîne
■ find() : recherche une chaîne ou un caractère dans une chaîne
■ insert() : insère une chaîne ou un caractère dans une chaîne
■ erase() : supprime un caractère ou une partie d’une chaîne
■ replace() : remplace une partie d’une chaîne par une autre

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:

• On peut utiliser la méthode at() pour récupérer un élément:

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

Les conteneurs associatifs :


❖ map : recherche rapide par clé: la clé unique et les éléments sont triés
❖multimap : une map avec possibilité de doublons pour la clé
❖ set : une map dont la clé= la valeur :recherche rapide, aucun doublon autorisé.
❖ multiset : un set avec possibilité de doublons pour la clé recherche rapide, doublons autorisés.

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

❑ Afficher le premier élément cout << montab.front() << endl;

❑ Afficher le dernier élément cout << montab.back() << endl;

11
Tableaux dynamiques( Les Vecteurs)

Front back

❑ Supprimer le dernier élément montab.pop_back();

❑ Afficher la taille actuelle du vecteur cout << montab.size() << endl;

❑ Trier le vecteur dans un ordre croissant sort(montab.begin(), montab.end() );


12
Tableaux dynamiques( Les Vecteurs)

Front back

❑ Parcourir le vecteur et afficher son contenu

for ( int i = 0; i < montab.size(); i++ )


{
cout << montab [ i ] << endl;
}
13
Tableaux dynamiques( Les Vecteurs)

Front back

❑ Parcourir le vecteur via à un iterator

for ( vector <int> :: iterator it = montab.begin() ; it != montab.end() ; ++it)


cout << ‘ ‘ << *it ;

14
Tableaux dynamiques( Les Vecteurs)

15

Vous aimerez peut-être aussi