std::queue<T,Container>::queue
De es.cppreference.net
queue() : queue(Container()) {}
|
(1) | (desde C++11) |
explicit queue( const Container& cont = Container() );
|
(2) | (hasta C++11) |
explicit queue( const Container& cont );
|
(desde C++11) | |
explicit queue( Container&& cont );
|
(3) | (desde C++11) |
queue( const queue& other );
|
(4) | (declarado implícitamente) |
queue( queue&& other );
|
(5) | (desde C++11) (declarado implícitamente) |
template< class InputIt >
queue( InputIt first, InputIt last );
|
(6) | (desde C++23) |
template< class Alloc >
explicit queue( const Alloc& alloc );
|
(7) | (desde C++11) |
template< class Alloc >
queue( const Container& cont, const Alloc& alloc );
|
(8) | (desde C++11) |
template< class Alloc >
queue( Container&& cont, const Alloc& alloc );
|
(9) | (desde C++11) |
template< class Alloc >
queue( const queue& other, const Alloc& alloc );
|
(10) | (desde C++11) |
template< class Alloc >
queue( queue&& other, const Alloc& alloc );
|
(11) | (desde C++11) |
template< class InputIt, class Alloc >
queue( InputIt first, InputIt last, const Alloc& alloc );
|
(12) | (desde C++23) |
template< container-compatible-range<T> R>
queue( std::from_range_t, R&& rg );
|
(13) | (desde C++23) |
template< container-compatible-range<T> R, class Alloc >
queue( std::from_range_t, R&& rg, const Alloc& alloc );
|
(14) | (desde C++23) |
Construye un nuevo contenedor subyacente del adaptador de contenedor a partir de una variedad de fuentes de datos.
1) Constructor por defecto. Inicializa por valor el contenedor.
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).6) Construye el contenedor subyacente
c con el contenido del rango [first, last). Esta sobrecarga participa en la resolución de sobrecarga solo si InputIt satisface LegacyInputIterator.7-12) Estos constructores participan en la resolución de sobrecarga solo si
std::uses_allocator<Container, Alloc>::value es true, es decir, si el contenedor subyacente es un contenedor consciente de asignador (cierto para todos los contenedores de la biblioteca estándar que se pueden usar con queue).7) Construye el contenedor subyacente usando
alloc como asignador, como si se hiciera mediante c(alloc).8) Construye el contenedor subyacente con el contenido de
cont y usando alloc como asignador, como si se hiciera mediante c(cont, alloc).9) Construye el contenedor subyacente con el contenido de
cont usando semántica de movimiento mientras se utiliza alloc como asignador, como si se hiciera mediante c(std::move(cont), alloc).10) Construye el adaptador con el contenido de
other.c y usando alloc como asignador, como si se hiciera mediante c(other.c, alloc).11) Construye el adaptador con el contenido de
other usando semántica de movimiento mientras se utiliza alloc como asignador, como si se hiciera mediante c(std::move(other.c), alloc).12) Construye el contenedor subyacente con el contenido del rango
[first, last) usando alloc como asignador, como si se hiciera mediante c(first, last, alloc). Esta sobrecarga participa en la resolución de sobrecarga solo si InputIt satisface LegacyInputIterator.13) Construye el contenedor subyacente con
ranges::to<Container>(std::forward<R>(rg)).14) Construye el contenedor subyacente con
ranges::to<Container>(std::forward<R>(rg), alloc).Parámetros
| alloc | - | asignador a utilizar para todas las asignaciones de memoria del contenedor subyacente |
| other | - | otro adaptador de contenedor que se utilizará como fuente para inicializar el contenedor subyacente |
| cont | - | contenedor que se utilizará como fuente para inicializar el contenedor subyacente |
| first, last | - | el par de iteradores que define el rango fuente de elementos con el que inicializar |
| rg | - |
un
rango compatible con contenedor
, es decir, un
input_range
cuyos elementos son convertibles a
T
|
| Requisitos de tipo | ||
-
Alloc
debe cumplir con los requisitos de
Allocator
.
|
||
-
Container
debe cumplir con los requisitos de
Container
. Los constructores que toman un parámetro de asignador participan en la resolución de sobrecarga solo si
Container
cumple con los requisitos de
AllocatorAwareContainer
.
|
||
-
InputIt
debe cumplir con los requisitos de
LegacyInputIterator
.
|
||
Complejidad
Igual que la operación correspondiente en el contenedor encapsulado.
Notas
| Macro de prueba de características | Valor | Std | Característica |
|---|---|---|---|
__cpp_lib_adaptor_iterator_pair_constructor
|
202106L
|
(C++23) | Constructores de pares de iteradores para std::queue y std::stack ; sobrecargas ( 6 ) y ( 12 ) |
__cpp_lib_containers_ranges
|
202202L
|
(C++23) | Construcción e inserción consciente de rangos; sobrecargas ( 13 ) y ( 14 ) |
Ejemplo
Ejecutar este código
#include <cassert> #include <deque> #include <iostream> #include <memory> #include <ranges> #include <queue> int main() { std::queue<int> c1; c1.push(5); assert(c1.size() == 1); std::queue<int> c2(c1); assert(c2.size() == 1); std::deque<int> deq{3, 1, 4, 1, 5}; std::queue<int> c3(deq); // sobrecarga (2) assert(c3.size() == 5); # ifdef __cpp_lib_adaptor_iterator_pair_constructor const auto il = {2, 7, 1, 8, 2}; std::queue<int> c4{il.begin(), il.end()}; // C++23, (6) assert(c4.size() == 5); # endif # if __cpp_lib_containers_ranges >= 202202L // C++23, sobrecarga (13) auto c5 = std::queue(std::from_range_t, std::ranges::iota(0, 42)); assert(c5.size() == 42); // mismo efecto con sintaxis de tubería, internamente usa sobrecarga (13) auto c6 = std::ranges::iota(0, 42) | std::ranges::to<std::queue>(); assert(c6.size() == 42); std::allocator<int> alloc; // C++23, sobrecarga (14) auto c7 = std::queue(std::from_range_t, std::ranges::iota(0, 42), alloc); assert(c7.size() == 42); // mismo efecto con sintaxis de tubería, internamente usa sobrecarga (14) auto c8 = std::ranges::iota(0, 42) | std::ranges::to<std::queue>(alloc); assert(c8.size() == 42); # endif }
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 |
|---|---|---|---|
| P0935R0 | C++11 | el constructor por defecto era explícito | hecho implícito |
Véase también
|
asigna valores al adaptador de contenedor
(función miembro pública) |