Espacios de nombres
Variantes
Acciones
 
 
 
 
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.

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:
  • back(), p. ej., std::vector::back(),
  • push_back(), p. ej., std::deque::push_back(),
  • pop_back(), p. ej., std::list::pop_back().

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.

Tipos miembro

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

Funciones no miembro

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

Clases auxiliares

Especializa el rasgo de tipo std::uses_allocator.
(plantilla de función)
Apoyo 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ística Valor Estándar Comentario
__cpp_lib_containers_ranges 202202L (C++23) Construcción e inserción de rangos para contenedores.

Example

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.

Véase también

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