Nous utilisons des cookies pour améliorer votre expérience. En poursuivant votre navigation sur ce site, vous acceptez l'utilisation de cookies.


Politique de confidentialité
Introduction et syntaxe de base
Pointeurs et fonctions
Programmation OO
Structures de données
La bibliothèque standard (STL)

La classe stack (Pile) en C++ (bibliothèque STL) <stack>

 

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.

Les éléments sont ajoutés(push)/supprimés(pop) à partir de la queue (back) du conteneur spécifique, qui est connu comme le sommet de la pile.

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.

FonctionDescription
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
                

Partager ce cours avec tes amis :
Rédigé par ESSADDOUKI Mostafa
ESSADDOUKI
The education of the 21st century opens up opportunities to not merely teach, but to coach, mentor, nurture and inspire.