std:: stack
|
Definido en el encabezado
<stack>
|
||
|
template
<
class
T,
|
||
La clase
std::stack
es un
adaptador de contenedor
que proporciona al programador la funcionalidad de una
pila
- específicamente, una estructura de datos LIFO (último en entrar, primero en salir).
La plantilla de clase actúa como un contenedor para el contenedor subyacente - solo se proporciona un conjunto específico de funciones. El stack empuja y extrae el elemento desde el final del contenedor subyacente, conocido como el top del stack.
Todas las funciones miembro de
std::stack
son
constexpr
: es posible crear y utilizar objetos
std::stack
en la evaluación de una expresión constante.
Sin embargo, los objetos
|
(desde C++26) |
Contenidos |
Parámetros de plantilla
| T | - |
El tipo de los elementos almacenados. El programa está mal formado si
T
no es del mismo tipo que
Container::value_type
.
|
| Container | - |
El tipo del contenedor subyacente utilizado para almacenar los elementos. El contenedor debe satisfacer los requisitos de
SequenceContainer
. Adicionalmente, debe proporcionar las siguientes funciones con la
semántica usual
:
Los contenedores estándar std::vector (incluyendo std::vector<bool> ), std::deque y std::list satisfacen estos requisitos. Por defecto, si no se especifica una clase contenedora para una instanciación de clase stack particular, se utiliza el contenedor estándar std::deque . |
Tipos de miembros
| Tipo | Definición |
container_type
|
Container
|
value_type
|
Container::value_type
|
size_type
|
Container :: size_type |
reference
|
Container::reference
|
const_reference
|
Container::const_reference
|
Objetos miembro
| Miembro | Descripción |
|
Container
c
|
el contenedor subyacente
(objeto miembro protegido) |
Funciones miembro
construye el
stack
(función miembro pública) |
|
destruye el
stack
(función miembro pública) |
|
|
asigna valores al adaptador de contenedor
(función miembro pública) |
|
Acceso a elementos |
|
|
accede al elemento superior
(función miembro pública) |
|
Capacidad |
|
|
comprueba si el adaptador de contenedor está vacío
(función miembro pública) |
|
|
devuelve el número de elementos
(función miembro pública) |
|
Modificadores |
|
|
inserta elemento en la parte superior
(función miembro pública) |
|
|
(C++23)
|
inserta un rango de elementos en la parte superior
(función miembro pública) |
|
(C++11)
|
construye elemento in situ en la parte superior
(función miembro pública) |
|
elimina el elemento superior
(función miembro pública) |
|
|
(C++11)
|
intercambia los contenidos
(función miembro pública) |
Funciones no miembro
compara lexicográficamente los valores de dos
stack
s
(plantilla de función) |
|
|
(C++11)
|
especializa el algoritmo
std::swap
(plantilla de función) |
Clases auxiliares
|
(C++11)
|
especializa el rasgo de tipo
std::uses_allocator
(especialización de plantilla de clase) |
|
(C++23)
|
soporte de formato para
std::stack
(especialización de plantilla de clase) |
Guías de deducción |
(desde C++17) |
Notas
| Macro de prueba de características | Valor | Estándar | Característica |
|---|---|---|---|
__cpp_lib_containers_ranges
|
202202L
|
(C++23) | Construcción e inserción de rangos para contenedores |
__cpp_lib_constexpr_stack
|
202502L
|
(C++26) |
constexpr
std::stack
|
Ejemplo
|
Esta sección está incompleta
Razón: sin ejemplo |
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.
| DR | Aplicado a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 307 | C++98 |
Container
no podía ser
std::vector<bool>
|
permitido |
| LWG 2566 | C++98 |
Faltaba el requisito para
Container::value_type
|
mal formado si
T
no es del mismo tipo que
Container::value_type
|
Véase también
|
matriz contigua redimensionable
(class template) |
|
|
bitset dinámico eficiente en espacio
(class template specialization) |
|
|
cola de doble extremo
(class template) |
|
|
lista doblemente enlazada
(class template) |