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
,list
classe etvector
classe, ou tout autre conteneur de séquence qui prend en charge les opérations de back
, push_back
et 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 lastack
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 laqueue
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++