std:: stack
|
Défini dans l'en-tête
<stack>
|
||
|
template
<
class
T,
|
||
La classe
std::stack
est un
adaptateur de conteneur
qui offre au programmeur la fonctionnalité d'une
pile
- spécifiquement, une structure de données LIFO (dernier entré, premier sorti).
Le modèle de classe agit comme un wrapper pour le conteneur sous-jacent - seul un ensemble spécifique de fonctions est fourni. La pile pousse et extrait l'élément depuis l'arrière du conteneur sous-jacent, connu comme le sommet de la pile.
Toutes les fonctions membres de
std::stack
sont
constexpr
: il est possible de créer et d'utiliser des objets
std::stack
dans l'évaluation d'une expression constante.
Cependant, les objets
|
(depuis C++26) |
Table des matières |
Paramètres du modèle
| T | - |
Le type des éléments stockés. Le programme est mal formé si
T
n'est pas le même type que
Container::value_type
.
|
| Container | - |
Le type du conteneur sous-jacent utilisé pour stocker les éléments. Le conteneur doit satisfaire aux exigences de
SequenceContainer
. De plus, il doit fournir les fonctions suivantes avec la
sémantique habituelle
:
Les conteneurs standards std::vector (y compris std::vector<bool> ), std::deque et std::list satisfont à ces exigences. Par défaut, si aucune classe de conteneur n'est spécifiée pour une instanciation de classe stack particulière, le conteneur standard std::deque est utilisé. |
Types membres
| Type | Définition |
container_type
|
Container
|
value_type
|
Container::value_type
|
size_type
|
Container :: size_type |
reference
|
Container::reference
|
const_reference
|
Container::const_reference
|
Objets membres
| Membre | Description |
|
Container
c
|
le conteneur sous-jacent
(objet membre protégé) |
Fonctions membres
construit la
stack
(fonction membre publique) |
|
détruit la
stack
(fonction membre publique) |
|
|
assigne des valeurs à l'adaptateur de conteneur
(fonction membre publique) |
|
Accès aux éléments |
|
|
accède à l'élément supérieur
(fonction membre publique) |
|
Capacité |
|
|
vérifie si l'adaptateur de conteneur est vide
(fonction membre publique) |
|
|
renvoie le nombre d'éléments
(fonction membre publique) |
|
Modificateurs |
|
|
insère un élément au sommet
(fonction membre publique) |
|
|
(C++23)
|
insère une plage d'éléments au sommet
(fonction membre publique) |
|
(C++11)
|
construit un élément en place au sommet
(fonction membre publique) |
|
supprime l'élément supérieur
(fonction membre publique) |
|
|
(C++11)
|
échange le contenu
(fonction membre publique) |
Fonctions non membres
compare lexicographiquement les valeurs de deux
stack
s
(modèle de fonction) |
|
|
(C++11)
|
spécialise l'algorithme
std::swap
(modèle de fonction) |
Classes d'assistance
|
(C++11)
|
spécialise le trait de type
std::uses_allocator
(spécialisation de modèle de classe) |
|
(C++23)
|
support de formatage pour
std::stack
(spécialisation de modèle de classe) |
Guides de déduction |
(depuis C++17) |
Notes
| Macro de test de fonctionnalité | Valeur | Std | Fonctionnalité |
|---|---|---|---|
__cpp_lib_containers_ranges
|
202202L
|
(C++23) | Construction et insertion de gammes pour les conteneurs |
__cpp_lib_constexpr_stack
|
202502L
|
(C++26) |
constexpr
std::stack
|
Exemple
|
Cette section est incomplète
Raison : aucun exemple |
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Applicable à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| LWG 307 | C++98 |
Container
ne pouvait pas être
std::vector<bool>
|
autorisé |
| LWG 2566 | C++98 |
Absence de l'exigence pour
Container::value_type
|
mal formé si
T
n'est pas du même type que
Container::value_type
|
Voir aussi
|
tableau contigu redimensionnable
(modèle de classe) |
|
|
ensemble de bits dynamique économe en espace
(spécialisation de modèle de classe) |
|
|
file double face
(modèle de classe) |
|
|
liste doublement chaînée
(modèle de classe) |