Bibliothèque C++ : conteneur pile

© D. Mathieu     mathieu@romarin.univ-aix.fr
I.U.T.d'Aix en Provence - Département Informatique
Créé le 13/01/2000 - Dernière mise à jour : 04/03/2000

Sommaire

Introduction
La classe stack
Opérateurs applicables à une pile

Introduction

    Il faut utiliser le fichier entête <stack>

Sommaire

 La classe stack

    Le conteneur stack a deux paramètres de généricité :     La déclaration de la classe stack est la suivante :
 
template <class T, class Container = deque<T> >

class stack 
{
  public :
    typedef typename Container::value_type value_type;
    typedef typename Container::size_type size_type;
    typedef Container container_type;

protected :
    Container c;

public:
    explicit stack (const Container & = Container());

    bool      empty () const { return c.empty (); }
    size_type size  () const { return c.size  (); }

    value_type&       top()       { return c.back (); }
    const value_type& top() const { return c.back (); }

    void push (const value_type & x) { c.push_back (x); }
    void pop  ()                     { c.pop_back  ( );  }

}; // stack

    La première partie publique exporte des types :

    Le constructeur initialise la donnée membre c. On reconnaît les accesseurs empty() et size(), communs à tous les conteneurs. La fonction top() permet, par ses deux versions, d'accéder à l'élément du sommet de la pile, avec ou sans modification possible.

    Contrairement à la plupart des implémentations traditionnelles, la fonction pop() ne renvoie rien et se contente de dépiler. Il faudra donc en général appeler successivement top() suivi de pop() pour extraire un élément de la pile.

    Le constructeur par défaut du conteneur qui implémente la pile est appelé lors de la construction de la pile.

Sommaire

Opérateurs applicables à une pile

    L'ensemble des opérateurs booléens de comparaison est applicable à une pile. Ils ont la même sémantique que les opérateurs correspondants appliqués au conteneur utilisé dans l'implémentation de la pile.
 
template <class T, class Container>
bool operator == (const stack <T, Container> & x,
                  const stack <T, Container> & y);

    Existent aussi :
 
<   !=   >   >=   <=

Sommaire

© D. Mathieu     mathieu@romarin.univ-aix.fr
I.U.T.d'Aix en Provence - Département Informatique