Namespaces
Variants

std:: stack

From cppreference.net
Défini dans l'en-tête <stack>
template <

class T,
class Container = std:: deque < T >

> class stack ;

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 std::stack ne peuvent généralement pas être constexpr , car toute allocation de stockage dynamique doit être libérée dans la même évaluation d'expression constante.

(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)
spécialise l'algorithme std::swap
(modèle de fonction)

Classes d'assistance

spécialise le trait de type std::uses_allocator
(spécialisation de modèle de classe)
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

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)