std::stack<T,Container>::stack
De cppreference.com
<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
Ejecuta este código
#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) |