Conteneurs de séquence - stack

 

stack

Les piles sont des structures de données qui se comportent, comme leur nom l’indique, comme un empilement d’objets. Elles ne permettent donc d’accéder qu’aux éléments situés en haut de la pile, et la récupération des éléments se fait dans l’ordre inverse de leur empilement. Pour implémenter une pile, vous devez inclure le fichier en-tête <stack> au début du programme et travailler dans l’espace de noms std.
La classe modèle stack reçoit deux arguments : le type des données à stocker dans la pile et un type de conteneur de séquence qui doit fournir au minimum les fonctions back(), push_back et pop_back. Vous pouvez donc utiliser les trois types précédents : vector, list et deque. Si vous ne fournissez pas cet argument, le conteneur deque est sélectionné par défaut.

Le code 8.10 illustre l’utilisation d’une pile. Les opérations sont très simples puisque leur champ d’action est limité à l’élément « du dessus » de la pile. La classe stack fournit la fonction push() pour empiler un élément, la fonction pop pour supprimer l’élément du dessus et la fonction top() pour accéder à cet élément.  

Code 8.10 : utilisation d’une pile

#include <iostream> 
#include <stack>  

using namespace std; 

int main() 
{ 
   typedef stack<int> pile_entiers; 
   //On crée une pile : 
   pile_entiers ma_pile; 
   //On empile quelques éléments : 
   ma_pile.push(1); 
   ma_pile.push(2);  
   ma_pile.push(3);  
  //On affiche les éléments en ordre inverse : 
 while (!ma_pile.empty()) //tant que la pile n’est pas vide 
  { 
    cout << ma_pile.top() << endl;  //on affiche l’élément 
      ma_pile.pop();                //puis on le supprime 
   } 
}


Le texte original de cette fiche pratique est extrait de
«Tout sur le C++» (Christine EBERHARDT, Collection
CommentCaMarche.net, Dunod, 2009)

Réalisé sous la direction de , fondateur de CommentCaMarche.net.

Ce document intitulé «  Conteneurs de séquence - stack  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.