Espacios de nombres
Variantes
Acciones

std::queue

De cppreference.com
< cpp‎ | container
 
 
 
 
Definido en el archivo de encabezado <queue>
template<

    class T,
    class Container = std::deque<T>

> class queue;

La plantilla de clase std::queue es un adaptador de contenedor que le da al programador la funcionalidad de una a cola. Específicamente, una estructura de datos FIFO (del acrónimo en inglés first-in, first-out) o PEPS (del acrónimo primeras entradas, primeras salidas).

La plantilla de clase actúa como envoltorio del contenedor subyacente; solo se proporciona un conjunto específico de funciones. La cola encola los elementos en la parte posterior del contenedor subyacente y los desencola desde el frente.

Contenido

[editar] Parámetros de plantilla

T - El tipo de los elementos almacenados. El comportamiento no está definido si T no es el mismo tipo que Container::value_type.
Container - El tipo del contenedor subyacente a usar para almacenar los elementos. El contenedor debe satisfacer los requerimientos de ContenedorDeSecuencia. Además, debe proporcionar las siguientes funciones con la semántica habitual:

Los contenedores estándar std::deque y std::list cumplen con estos requisitos.

[editar] Tipos miembro

Tipo miembro Definición
container_type Container [editar]
value_type Container::value_type [editar]
size_type Container::size_type [editar]
reference Container::reference [editar]
const_reference Container::const_reference [editar]

[editar] Objetos miembro

Nombre de miembro Definición
Container c
El contenedor subyacente.
(objeto miembro protegido) [editar]

[editar] Funciones miembro

Construye el contenedor queue.
(función miembro pública) [editar]
Destruye el contenedor queue.
(función miembro pública) [editar]
Asigna valores al adaptador de contenedor.
(función miembro pública) [editar]
Acceso a elementos
Accede al primer elemento.
(función miembro pública) [editar]
Accede al último elemento.
(función miembro pública) [editar]
Capacidad
Comprueba si el contenedor subyacente está vacío.
(función miembro pública) [editar]
Devuelve el número de elementos.
(función miembro pública) [editar]
Modificadores
Encola un elemento al final de la cola.
(función miembro pública) [editar]
Inserta un rango de elementos al final de la cola.
(función miembro pública) [editar]
(C++11)
Encola el elemento en el sitio al final de la cola.
(función miembro pública) [editar]
Desencola el elemento al frente de la cola.
(función miembro pública) [editar]
(C++11)
Intercambia el contenido.
(función miembro pública) [editar]

[editar] Funciones no miembro

Compara lexicográficamente los valores de queue.
(plantilla de función) [editar]
Especializa el algoritmo std::swap.
(plantilla de función) [editar]

[editar] Clases auxiliares

Especializa el rasgo de tipo std::uses_allocator.
(plantilla de función) [editar]
Apoyo de formato para std::queue.
(especialización de plantilla de clase) [editar]

Guías de deducción

(desde C++17)

[editar] Notas

Macro de prueba de característica Valor Estándar Comentario
__cpp_lib_containers_ranges 202202L (C++23) Construcción de rangos e inserción para contenedores.

[editar] Ejemplo

#include <cassert>
#include <iostream>
#include <queue>
 
int main()
{
    std::queue<int> q;
 
    q.push(0); // encola 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(); // desencola el primer elemento, 0
    assert(q.size() == 3);
 
    // Imprime y elimina todos los elementos. Ten en cuenta que std::queue no
    // admite begin()/end(), por lo que no se puede usar un bucle range-for.
    std::cout << "q: ";
    for (; !q.empty(); q.pop())
        std::cout << q.front() << ' ';
    std::cout << '\n';
    assert(q.size() == 0);
}

Salida:

q: 1 2 3

[editar] 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
LWG 307 C++98 std::queue no admitía contenedores que usaran
tipos referencia a proxy[1] en lugar de
(const) value_type&
Se admiten.
LWG 2566 C++98 Faltaba el requisito de Container::value_type. Mal formado si T no es el mismo tipo que
Container::value_type.
  1. Como contenedores similares a std::vector<bool> con compatibilidad adicional con pop_front(). La resolución de este
    informe de defecto agregó compatibilidad con std::vector<bool> para std::stack y std::priority_queue. Los cambios que involucran a std::queue son para mantener la consistencia.

[editar] Véase también

Adapta un contenedor para proporcionar una cola de prioridad.
(plantilla de clase) [editar]
Cola doblemente terminada (deque).
(plantilla de clase) [editar]
Lista doblemente enlazada.
(plantilla de clase) [editar]