La classe stack (Pile) en C++ (bibliothèque STL) <stack>
La bibliothèque STL définit également trois adaptateurs de conteneur qui ont une interface plus petite pour une utilisation plus facile. Les adaptateurs de conteneur définis dans la bibliothèque sont stack (Pile), queue (File d’attente) et priority_queue(File de priorité).
Nous ne pouvons pas appliquer les algorithmes définis dans la bibliothèque aux adaptateurs de conteneur car ils manquent d'itérateurs ; Elles ne fournissent pas les fonctions membres, telles que begin et end, pour créer des itérateurs.
Dans ce cours, nous allons discuter la structure de données stack (Pile), puis nous allons discuter les autres classes dans les prochains cours.
La classe stack
La classe stack (Pile), qui est définie dans le fichier d'en-tête <stack>, est une classe d'adaptateur de conteneur conçue pour trois opérations simples : push (Empiler), pop (Dépiler) et top (Sommet). La classe stack est conçue pour l'insertion et la suppression à partir d'une extrémité (Sommet). Elle est également appelée structure dernier entré, premier sorti (LIFO) car le dernier élément poussé dans la pile est le premier élément sorti de la pile.
Les piles sont implémentées en tant qu'adaptateurs de conteneur, qui sont des classes qui utilisent un objet encapsulé d'une classe de conteneur spécifique comme conteneur sous-jacent, fournissant un ensemble spécifique de fonctions membres pour accéder à ses éléments.
Le conteneur doit prendre en charge les opérations suivantes :
- empty
- size
- back
- push_back
- pop_back
Les classes de conteneur standard vector, deque et list remplissent ces conditions. Par défaut, si aucune classe de conteneur n'est spécifiée pour une instanciation de classe de pile particulière, le conteneur standard deque est utilisé.
Syntaxe
Pour créer une pile, vous devez inclure le fichier d'en-tête <stack> dans votre code.
stack<type_objets> nomPile;
L'instruction ci-dessus créera une pile nommée nomPile de type type_objets.
Opérations
L'interface stack crée un constructeur vide. Nous pouvons vérifier la taille(size()) et est ce que la pile est vide (empty()). La seule fonction membre que nous pouvons utiliser pour accéder aux éléments de la pile est la fonction membre top(). Les opérations push() et pop() sont utilisées pour insérer et effacer un élément de la pile, respectivement.
Fonction | Description |
---|---|
bool empty() | Retourne si la pile est vide : c'est-à-dire si sa taille est nulle. |
size_type size() | Renvoie le nombre d'éléments dans la pile. |
reference top() | Renvoie une référence à l'élément sommet de la pile. L’élément sommet est le dernier élément inséré dans la pile. |
void push (const value_type& val) | Insère un nouvel élément en sommet de la pile, au-dessus de son élément sommet actuel. Le contenu de ce nouvel élément est une copie de val. |
void pop() | Supprime l'élément sommet, réduisant ainsi sa taille de 1. L'élément supprimé est le dernier élément inséré dans la pile |
Exemple complet
#include <iostream> #include <stack> using namespace std; int main() { stack<int> pile; pile.push(10); pile.push(20); pile.push(50); pile.push(70); pile.push(30); cout<< "Sommet de la pile : "<<pile.top()<<'\n'; cout<< "Taille de la pile : "<<pile.size(); cout<<'\n'; pile.pop(); // Supprimer le sommet // Afficher l'ensemble des éléments cout<< "Les elements de la pile : "; while (!pile.empty()) { cout << pile.top() << ' ' ; // Afficher le sommet pile.pop(); // supprimer le sommet } cout<<'\n'; cout<< "Taille de la pile apres: "<<pile.size(); return 0; }
Résultat
Sommet de la pile : 30 Taille de la pile : 5 Les elements de la pile : 70 50 20 10 Taille de la pile apres: 0