Espacios de nombres
Variantes
Acciones

std::stack

De cppreference.com
< cpp‎ | container
 
 
 
 
Definido en el archivo de encabezado <stack>
template<

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

> class stack;

La clase std::stack es un adaptador de contenedor que le da al programador la funcionalidad de una pila. Específicamente, una estructura de datos LIFO (del acrónimo en inglés last-in, first-out) o UEPS (del acrónimo últimas entradas, primeras salidas).

La plantilla de clase actúa como envoltorio del contenedor subyacente; solo se proporciona un conjunto específico de funciones. La pila apila y desapila el elemento desde la parte posterior del contenedor subyacente, conocido como la parte superior de la pila.

Contenido

[editar] Parámetros de plantilla

T - El tipo de los elementos almacenados. El comportamiento no está definido si T no es el mismo tipo que Container::value_type.
Container - El tipo del contenedor subyacente a usar para almacenar los elementos. El contenedor debe cumplir con los requisitos de ContenedorDeSecuencia. Además, debe proporcionar las siguientes funciones con la semántica habitual:

Los contenedores estándar std::vector, std::deque y std::list cumplen con estos requisitos. Por defecto, si no se especifica ninguna clase de contenedor para la ejemplación particular de una pila, se usa el contenedor estándar std::deque.

[editar] Tipos miembro

Tipo miembro Definición
container_type Container [editar]
value_type Container::value_type [editar]
size_type Container::size_type [editar]
reference Container::reference [editar]
const_reference Container::const_reference [editar]

[editar] Objetos miembro

Miembro Descripción
Container c
El contenedor subyacente.
(objeto miembro protegido) [editar]

[editar] Funciones miembro

Construye el contenedor stack.
(función miembro pública) [editar]
Destruye el contenedor stack.
(función miembro pública) [editar]
Asigna valores al adaptador de contenedor.
(función miembro pública) [editar]
Acceso a elementos
Accede al elemento en la parte superior.
(función miembro pública) [editar]
Capacidad
Comprueba si el contenedor subyacente está vacío.
(función miembro pública) [editar]
Devuelve el número de elementos.
(función miembro pública) [editar]
Modificadores
Apila un elemento en la parte superior de la pila.
(función miembro pública) [editar]
Inserta un rango de elementos en la parte superior de la pila.
(función miembro pública) [editar]
(C++11)
Apila el elemento en el sitio en la parte superior de la pila.
(función miembro pública) [editar]
Desapila el elemento en la parte superior de la pila.
(función miembro pública) [editar]
(C++11)
Intercambia el contenido.
(función miembro pública) [editar]

[editar] Funciones no miembro

Compara lexicográficamente los valores de stack.
(plantilla de función) [editar]
Especializa el algoritmo std::swap.
(plantilla de función) [editar]

[editar] Clases auxiliares

Especializa el rasgo de tipo std::uses_allocator.
(plantilla de función) [editar]
Apoyo de formato para std::stack.
(especialización de plantilla de clase) [editar]

Guías de deducción

(desde C++17)

[editar] Notas

Macro de prueba de característica Valor Estándar Comentario
__cpp_lib_containers_ranges 202202L (C++23) Construcción e inserción de rangos para contenedores.

[editar] Example

[editar] Informes de defectos

Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.

ID Aplicado a Comportamiento según lo publicado Comportamiento correcto
LWG 307 C++98 Container no podía ser. Se admite.
LWG 2566 C++98 Faltaba el requisito de Container::value_type. Mal formado si T no es el mismo tipo que
Container::value_type.

[editar] Véase también

Array dinámico contiguo.
(plantilla de clase) [editar]
Conjunto de bits eficiente en el uso de espacio.
(plantilla de clase) [editar]
Cola doblemente terminada (deque).
(plantilla de clase) [editar]
Lista doblemente enlazada.
(plantilla de clase) [editar]