Espacios de nombres
Variantes

std::stack<T,Container>::stack

De cppreference.com

[edit template]
 
 
 
 
<tbody> </tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody><tbody> </tbody>
stack() : stack(Container()) { }
(1) (desde C++11)
(2)
explicit stack( const Container& cont = Container() );
(hasta C++11)
explicit stack( const Container& cont );
(desde C++11)
explicit stack( Container&& cont );
(3) (desde C++11)
stack( const stack& other );
(4)
stack( stack&& other );
(5) (desde C++11)
template< class InputIt > stack( InputIt first, InputIt last );
(6) (desde C++23)
template< class Alloc > explicit stack( const Alloc& alloc );
(7) (desde C++11)
template< class Alloc > stack( const Container& cont, const Alloc& alloc );
(8) (desde C++11)
template< class Alloc > stack( Container&& cont, const Alloc& alloc );
(9) (desde C++11)
template< class Alloc > stack( const stack& other, const Alloc& alloc );
(10) (desde C++11)
template< class Alloc > stack( stack&& other, const Alloc& alloc );
(11) (desde C++11)
template< class InputIt, class Alloc > stack( InputIt first, InputIt last, const Alloc& alloc );
(12) (desde C++23)

Construye el nuevo contenedor subyacente del adaptador de contenedor a partir de una variedad de fuentes de datos.

1) Constructor por defecto. Inicializa el contenedor por valor.
2) Construye por copia el contenedor subyacente c con el contenido de cont. Este es también el constructor por defecto. (hasta C++11)
3) Construye por movimiento el contenedor subyacente c con std::move(cont).
4) Constructor de copia. El adaptador se construye por copia con el contenido de other.c.
5) Constructor de movimiento. El adaptador se construye con std::move(other.c).
6) Construye el contenedor subyacente c con el contenido del rango [first, last). Esta sobrecarga solo participa en la resolución de sobrecargas si InputIt satisface InputIterator.
7-12) Estos constructores participan en la resolución de sobrecargas solo si std::uses_allocator<Container, Alloc>::value es true, es decir, si el contenedor subyacente es un contenedor consciente de un asignador de memoria (true para todos los contenedores de la biblioteca estándar que pueden usarse con stack).
7) Construye el contenedor subyacente usando alloc como el asignador de memoria, como si fuera por c(alloc).
8) Construye el contenedor subyacente con el contenido de cont y usando alloc como el asignador de memoria, como si fuera por c(cont, alloc).
9) Construye el contenedor subyacente con el contenido de cont usando la semántica de movimiento mientras utiliza alloc como el asignador de memoria, como si fuera por c(std::move(cont), alloc).
10) Construye el adaptador con el contenido de other.c y usando alloc como el asignador de memoria, como si fuera por c(other.c, alloc).
11) Construye el adaptador con el contenido de other usando la semántica de movimiento mientras utiliza alloc como el asignador de memoria, como si fuera por c(std::move(other.c), alloc).
12) Construye el contenedor subyacente con el contenido del rango [first, last) usando alloc como el asignador de memoria, como si fuera por c(first, last, alloc). Esta sobrecarga solo participa en la resolución de sobrecargas si InputIt satisface InputIterator.

Parámetros

alloc - Asignador de memoria a usar para todas las asignaciones de memoria del contenedor subyacente.
other - Otro adaptador de contenedor a usar como fuente para inicializar el contenedor subyacente.
cont - Contenedor a usar como fuente para inicializar el contenedor subyacente.
first, last - Rango de elementos con el cual inicializar.
Requisitos de tipo
-
Alloc debe satisfacer los requisitos de Allocator.
-
Container debe satisfacer los requisitos de Container. Los constructores que toman un parámetro de asignador de memoria participan en la resolución de sobrecargas solo si Container cumple con los requerimientos de AllocatorAwareContainer.
-
InputIt debe satisfacer los requisitos de InputIterator.

Complejidad

La misma que la operación correspondiente en el contenedor subyacente.

Ejemplo

#include <stack>
#include <deque>
#include <iostream>

int main()
{
    std::stack<int> c1;
    c1.push(5);
    std::cout << c1.size() << '\n';

    std::stack<int> c2(c1);
    std::cout << c2.size() << '\n';
 
    std::deque<int> deq {3, 1, 4, 1, 5};
    std::stack<int> c3(deq);
    std::cout << c3.size() << '\n';
}

Salida:

1
1
5

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
P0935R0 C++11 El constructor por defecto era explicit. Se hizo implícito.

Véase también

Asigna valores al adaptador de contenedor.
(función miembro pública) [editar]