std:: queue
|
Definido en el encabezado
<queue>
|
||
|
template
<
class
T,
|
||
La
std::queue
es una
adaptadora de contenedor
que proporciona la funcionalidad de una
cola
- específicamente, una estructura de datos FIFO (primero en entrar, primero en salir).
La plantilla de clase actúa como un contenedor para el contenedor subyacente - solo se proporciona un conjunto específico de funciones. La queue inserta los elementos en la parte posterior del contenedor subyacente y los extrae del frente.
Todas las funciones miembro de
std::queue
son
constexpr
: es posible crear y utilizar objetos
std::queue
en la evaluación de una expresión constante.
Sin embargo, los objetos
|
(since C++26) |
Contenidos |
Parámetros de plantilla
| T | - |
El tipo de los elementos almacenados. El programa está mal formado si
T
no es del mismo tipo que
Container::value_type
.
|
| Container | - |
El tipo del contenedor subyacente utilizado para almacenar los elementos. El contenedor debe satisfacer los requisitos de
SequenceContainer
. Adicionalmente, debe proporcionar las siguientes funciones con la
semántica usual
:
Los contenedores estándar std::deque y std::list satisfacen estos requisitos. |
Tipos de miembros
| Tipo de 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
| Nombre del miembro | Definición |
|
Container
c
|
el contenedor subyacente
(objeto miembro protegido) |
Funciones miembro
construye el
queue
(función miembro pública) |
|
destruye el
queue
(función miembro pública) |
|
|
asigna valores al adaptador de contenedor
(función miembro pública) |
|
Acceso a elementos |
|
|
accede al primer elemento
(función miembro pública) |
|
|
accede al último elemento
(función miembro pública) |
|
Capacidad |
|
|
comprueba si el adaptador de contenedor está vacío
(función miembro pública) |
|
|
devuelve el número de elementos
(función miembro pública) |
|
Modificadores |
|
|
inserta elemento al final
(función miembro pública) |
|
|
(C++23)
|
inserta un rango de elementos al final
(función miembro pública) |
|
(C++11)
|
construye elemento en el lugar al final
(función miembro pública) |
|
elimina el primer elemento
(función miembro pública) |
|
|
(C++11)
|
intercambia el contenido
(función miembro pública) |
Funciones no miembro
compara lexicográficamente los valores de dos
queue
s
(plantilla de función) |
|
|
(C++11)
|
especializa el algoritmo
std::swap
(plantilla de función) |
Clases auxiliares
|
(C++11)
|
especializa el rasgo de tipo
std::uses_allocator
(especialización de plantilla de clase) |
|
(C++23)
|
soporte de formato para
std::queue
(especialización de plantilla de clase) |
Guías de deducción |
(desde C++17) |
Notas
| Macro de prueba de características | Valor | Std | Característica |
|---|---|---|---|
__cpp_lib_containers_ranges
|
202202L
|
(C++23) | Construcción e inserción de rangos para contenedores |
__cpp_lib_constexpr_queue
|
202502L
|
(C++26) |
constexpr
std::queue
|
Ejemplo
#include <cassert> #include <iostream> #include <queue> int main() { std::queue<int> q; q.push(0); // back pushes 0 q.push(1); // q = 0 1 q.push(2); // q = 0 1 2 q.push(3); // q = 0 1 2 3 assert(q.front() == 0); assert(q.back() == 3); assert(q.size() == 4); q.pop(); // removes the front element, 0 assert(q.size() == 3); // Print and remove all elements. Note that std::queue does not // support begin()/end(), so a range-for-loop cannot be used. std::cout << "q: "; for (; !q.empty(); q.pop()) std::cout << q.front() << ' '; std::cout << '\n'; assert(q.size() == 0); }
Salida:
q: 1 2 3
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 |
|---|---|---|---|
| LWG 307 | C++98 |
std::queue
no admitía contenedores que usaban tipos de
referencia proxy [1] en lugar de (
const
)
value_type&
|
admitido |
| LWG 2566 | C++98 |
Faltaba el requisito para
Container::value_type
|
mal formado si
T
no es del mismo tipo que
Container::value_type
|
-
↑
Como contenedores similares a
std::vector<bool>
con soporte adicional de
pop_front(). La resolución de este DR
añadió soporte de std::vector<bool> para std::stack y std::priority_queue . Los cambios relacionados constd::queue
son para mantener la consistencia.
Véase también
|
adapta un contenedor para proporcionar cola de prioridad
(class template) |
|
|
cola de doble extremo
(class template) |
|
|
lista doblemente enlazada
(class template) |