Espacios de nombres
Variantes
Acciones
 
 
 
 
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.

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:
  • back(), p. ej., std::deque::back(),
  • front(), p. ej., std::list::front(),
  • push_back(), p. ej., std::deque::push_back(),
  • pop_front(), p. ej., std::list::pop_front().

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

Tipos miembro

Tipo 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 de miembro Definición
Container c
El contenedor subyacente.
(objeto miembro protegido)

Funciones miembro

Construye el contenedor queue.
(función miembro pública)
Destruye el contenedor 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 contenedor subyacente está vacío.
(función miembro pública)
Devuelve el número de elementos.
(función miembro pública)
Modificadores
Encola un elemento al final de la cola.
(función miembro pública)
Inserta un rango de elementos al final de la cola.
(función miembro pública)
(C++11)
Encola el elemento en el sitio al final de la cola.
(función miembro pública)
Desencola el elemento al frente de la cola.
(función miembro pública)
(C++11)
Intercambia el contenido.
(función miembro pública)

Funciones no miembro

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

Clases auxiliares

Especializa el rasgo de tipo std::uses_allocator.
(plantilla de función)
Apoyo 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ística Valor Estándar Comentario
__cpp_lib_containers_ranges 202202L (C++23) Construcción de rangos e inserción para contenedores.

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

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.

Véase también

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