Partager via


La classe stack

Classe d'adaptateur de conteneur modèle qui fournit une restriction des fonctionnalités limitant l'accès à l'élément ajouté le plus récemment pour un type de conteneur sous-jacent. La stack classe est utilisée lorsqu’il est important d’être clair que seules stack les opérations sont effectuées sur le conteneur.

Syntaxe

template <class Type, class Container= deque <Type>>
class stack

Paramètres

Type
Type de données des éléments à stocker dans la pile.

Container
Type du conteneur sous-jacent utilisé pour implémenter la pile. La valeur par défaut est la classe deque<Type>.

Notes

Les éléments de classe Type stipulés dans le premier paramètre de modèle d’un objet de pile sont synonymes value_type et doivent correspondre au type d’élément dans la classe Container de conteneur sous-jacente stipulée par le deuxième paramètre de modèle. Il Type doit être assignable, afin qu’il soit possible de copier des objets de ce type et d’affecter des valeurs à des variables de ce type.

Les classes de conteneur sous-jacentes appropriées pour la pile incluentdeque,listclasse etvectorclasse, ou tout autre conteneur de séquence qui prend en charge les opérations de back, push_backet pop_back. La classe de conteneur sous-jacent est encapsulée dans l'adaptateur de conteneur, qui expose seulement l'ensemble limité de fonctions membres du conteneur de séquence comme une interface publique.

Les stack objets sont comparables si et seulement si les éléments de la classe Type sont comparables et sont inférieurs à comparables si et seulement si les éléments de classe Type sont moins comparables.

  • La stack classe prend en charge une structure de données de dernier entré et premier sorti (LIFO). Une bonne analogie à avoir à l'esprit est celle d'une pile d'assiettes. Les éléments (les assiettes) peuvent être insérés, inspectés ou supprimés seulement à partir du haut de la pile, qui est le dernier élément à la fin du conteneur de base. La restriction d’accès uniquement à l’élément supérieur est la raison d’utiliser la stack classe.

  • La queue classe prend en charge une structure de données fiFO (first-out) de première entrée. Une bonne analogie à avoir à l'esprit est celle de personnes faisant la file pour un employé de banque. Les éléments (les personnes) peuvent être ajoutés à l'arrière de la file et ils sont supprimés de l'avant de la file. Le début et la fin d'une file peuvent être inspectés. La restriction d’accès uniquement aux éléments avant et arrière de cette façon est la raison pour laquelle la classe utilise la queue classe.

  • La priority_queue classe trie ses éléments afin que le plus grand élément soit toujours à la position supérieure. Elle prend en charge l'insertion d'un élément, et l'inspection et la suppression de l'élément du haut. Une bonne analogie à avoir à l'esprit est celle de personnes faisant la file, classées selon leur âge, leur taille ou un autre critère.

Membres

Constructeurs

Nom Description
stack Construit un objet stack qui est vide ou qui est une copie de l'objet conteneur de base.

Typedefs

Nom Description
container_type Type qui fournit le conteneur de base à adapter par un objet stack.
size_type Type entier non signé qui peut représenter le nombre d'éléments dans un stack.
value_type Type qui représente le type d'objet stocké en tant qu'élément dans un objet stack.

Functions

Nom Description
empty Vérifie si l'objet stack est vide.
pop Supprime l'élément du haut de l'objet stack.
push Ajoute un élément en haut de l'objet stack.
size Retourne le nombre d'éléments d'un stack.
top Retourne une référence à un élément en haut de l'objet lastack.

container_type

Type qui fournit le conteneur de base à adapter.

typedef Container container_type;

Notes

Le type est un synonyme du paramètre de modèle Container. Les trois classes de conteneur de séquence de bibliothèque standard C++ ( la vector classe, list la classe et la classe deque par défaut) répondent aux exigences à utiliser comme conteneur de base pour un stack objet. Les types définis par l’utilisateur peuvent également être utilisés s’ils remplissent ces conditions.

Pour plus d’informations sur Container, consultez la section Remarques de la stack rubrique Classe .

Exemple

Consultez l’exemple pour stack::stack obtenir un exemple de déclaration et d’utilisation container_type.

empty

Vérifie si un objet stack est vide.

bool empty() const;

Valeur de retour

true si la pile est vide ; false si la pile n’est pas vide.

Exemple

// stack_empty.cpp
// compile with: /EHsc
#include <stack>
#include <iostream>

int main( )
{
   using namespace std;
   // Declares stacks with default deque base container
   stack <int> s1, s2;

   s1.push( 1 );

   if ( s1.empty( ) )
      cout << "The stack s1 is empty." << endl;
   else
      cout << "The stack s1 is not empty." << endl;

   if ( s2.empty( ) )
      cout << "The stack s2 is empty." << endl;
   else
      cout << "The stack s2 is not empty." << endl;
}
The stack s1 is not empty.
The stack s2 is empty.

pop

Supprime l’élément du haut de l’objet stack.

void pop();

Notes

L’objet stack ne doit pas être vide pour appliquer la fonction membre. Le haut de l’objet stack correspond à la position occupée par l’élément ajouté le plus récemment et au dernier élément à la fin du conteneur.

Exemple

// stack_pop.cpp
// compile with: /EHsc
#include <stack>
#include <iostream>

int main( )
{
   using namespace std;
   stack <int> s1, s2;

   s1.push( 10 );
   s1.push( 20 );
   s1.push( 30 );

   stack <int>::size_type i;
   i = s1.size( );
   cout << "The stack length is " << i << "." << endl;

   i = s1.top( );
   cout << "The element at the top of the stack is "
        << i << "." << endl;

   s1.pop( );

   i = s1.size( );
   cout << "After a pop, the stack length is "
        << i << "." << endl;

   i = s1.top( );
   cout << "After a pop, the element at the top of the stack is "
        << i << "." << endl;
}
The stack length is 3.
The element at the top of the stack is 30.
After a pop, the stack length is 2.
After a pop, the element at the top of the stack is 20.

push

Ajoute un élément en haut de la pile.

void push(const Type& val);

Paramètres

val
Élément ajouté en haut de l’objet stack.

Notes

Le haut de l’objet stack correspond à la position occupée par l’élément ajouté le plus récemment et au dernier élément à la fin du conteneur.

Exemple

// stack_push.cpp
// compile with: /EHsc
#include <stack>
#include <iostream>

int main( )
{
   using namespace std;
   stack <int> s1;

   s1.push( 10 );
   s1.push( 20 );
   s1.push( 30 );

   stack <int>::size_type i;
   i = s1.size( );
   cout << "The stack length is " << i << "." << endl;

   i = s1.top( );
   cout << "The element at the top of the stack is "
        << i << "." << endl;
}
The stack length is 3.
The element at the top of the stack is 30.

size

Retourne le nombre d’éléments figurant dans l’objet stack.

size_type size() const;

Valeur de retour

Longueur actuelle de l’objet stack.

Exemple

// stack_size.cpp
// compile with: /EHsc
#include <stack>
#include <iostream>

int main( )
{
   using namespace std;
   stack <int> s1, s2;
   stack <int>::size_type i;

   s1.push( 1 );
   i = s1.size( );
   cout << "The stack length is " << i << "." << endl;

   s1.push( 2 );
   i = s1.size( );
   cout << "The stack length is now " << i << "." << endl;
}
The stack length is 1.
The stack length is now 2.

size_type

Type entier non signé qui peut représenter le nombre d’éléments dans un objet stack.

typedef typename Container::size_type size_type;

Notes

Le type est un synonyme de size_type pour le conteneur de base adapté par la classe stack.

Exemple

Consultez l’exemple pour size obtenir un exemple de déclaration et d’utilisation size_type.

stack

Construit un objet stack qui est vide ou qui est une copie d’une classe de conteneur de base.

stack();

explicit stack(const container_type& right);

Paramètres

right
Conteneur dont l’objet stack construit doit être une copie.

Exemple

// stack_stack.cpp
// compile with: /EHsc
#include <stack>
#include <vector>
#include <list>
#include <iostream>

int main( )
{
   using namespace std;

   // Declares stack with default deque base container
   stack <char> dsc1;

   //Explicitly declares a stack with deque base container
   stack <char, deque<char> > dsc2;

   // Declares a stack with vector base containers
   stack <int, vector<int> > vsi1;

   // Declares a stack with list base container
   stack <int, list<int> > lsi;

   // The second member function copies elements from a container
   vector<int> v1;
   v1.push_back( 1 );
   stack <int, vector<int> > vsi2( v1 );
   cout << "The element at the top of stack vsi2 is "
        << vsi2.top( ) << "." << endl;
}
The element at the top of stack vsi2 is 1.

top

Retourne une référence à un élément en haut de l’objet stack.

reference top();

const_reference top() const;

Valeur de retour

Référence au dernier élément dans le conteneur en haut de l’objet stack.

Notes

L’objet stack ne doit pas être vide pour appliquer la fonction membre. Le haut de l’objet stack correspond à la position occupée par l’élément ajouté le plus récemment et au dernier élément à la fin du conteneur.

Si la valeur de retour d’un top objet est affectée à un const_reference, l’objet stack ne peut pas être modifié. Si la valeur de retour d’un top objet est affectée à un reference, l’objet stack peut être modifié.

Exemple

// stack_top.cpp
// compile with: /EHsc
#include <stack>
#include <iostream>

int main( )
{
   using namespace std;
   stack <int> s1;

   s1.push( 1 );
   s1.push( 2 );

   int& i = s1.top( );
   const int& ii = s1.top( );

   cout << "The top integer of the stack s1 is "
        << i << "." << endl;
   i--;
   cout << "The next integer down is "<< ii << "." << endl;
}
The top integer of the stack s1 is 2.
The next integer down is 1.

value_type

Type qui représente le type d’objet stocké comme élément dans une classe stack.

typedef typename Container::value_type value_type;

Notes

Le type est un synonyme de value_type pour le conteneur de base adapté par la classe stack.

Exemple

// stack_value_type.cpp
// compile with: /EHsc
#include <stack>
#include <iostream>

int main( )
{
   using namespace std;
   // Declares stacks with default deque base container
   stack<int>::value_type AnInt;

   AnInt = 69;
   cout << "The value_type is AnInt = " << AnInt << endl;

   stack<int> s1;
   s1.push( AnInt );
   cout << "The element at the top of the stack is "
        << s1.top( ) << "." << endl;
}
The value_type is AnInt = 69
The element at the top of the stack is 69.

Voir aussi

Sécurité des threads dans la bibliothèque C++ Standard
Informations de référence sur la bibliothèque standard C++