std::queue<T,Container>:: queue
From cppreference.net
|
queue
(
)
:
queue
(
Container
(
)
)
{
}
|
(1) | (desde C++11) |
| (2) | ||
|
explicit
queue
(
const
Container
&
cont
=
Container
(
)
)
;
|
(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 diversas fuentes de datos.
1)
Constructor por defecto. Inicializa el contenedor por valor.
2)
Construye por copia el contenedor subyacente
c
con los contenidos de
cont
.
Este es también el constructor por defecto.
(until C++11)
3)
Construye por movimiento el contenedor subyacente
c
con
std
::
move
(
cont
)
.
6)
Construye el contenedor subyacente
c
con los contenidos 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 del asignador (verdadero para todos los contenedores de la biblioteca estándar que pueden usarse con
queue
).
7)
Construye el contenedor subyacente utilizando
alloc
como asignador de memoria, como si fuera mediante
c
(
alloc
)
.
8)
Construye el contenedor subyacente con el contenido de
cont
y utilizando
alloc
como asignador de memoria, como si fuera mediante
c
(
cont, alloc
)
.
9)
Construye el contenedor subyacente con el contenido de
cont
utilizando semántica de movimiento mientras emplea
alloc
como asignador, como si fuera mediante
c
(
std
::
move
(
cont
)
, alloc
)
.
10)
Construye el adaptador con los contenidos de
other.
c
y usando
alloc
como asignador de memoria, como si fuera mediante
c
(
other.
c
, alloc
)
.
11)
Construye el adaptador con los contenidos de
other
usando semántica de movimiento mientras utiliza
alloc
como asignador de memoria, como si fuera
c
(
std
::
move
(
other.
c
)
, alloc
)
.
12)
Construye el contenedor subyacente con el contenido del rango
[
first
,
last
)
usando
alloc
como asignador de memoria, como si fuera 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
)
.
Contenidos |
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) |