queue (Clase)

 

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

Una clase de adaptador de contenedor de plantilla que proporciona una restricción de la funcionalidad de algún tipo de contenedor subyacente, limitar el acceso a los elementos de la portada y contraportados. Pueden agregar en la parte posterior o quitar los elementos, y se pueden inspeccionar los elementos en cualquier extremo de la cola.

template <class Type, class Container = deque <Type>>  
class queue  

Parámetros

ype
El tipo de datos del elemento que se almacenará en la cola

Container
El tipo del contenedor subyacente que se utiliza para implementar la cola.

Los elementos de la clase tipo estipulado en la primera plantilla son sinónimos de parámetro de un objeto de cola value_type y debe coincidir con el tipo de elemento de la clase de contenedor subyacente contenedor estipulado por el segundo parámetro de plantilla. El tipo debe ser asignable, por lo que es posible copiar objetos de ese tipo y para asignar valores a variables de ese tipo.

Clases de contenedor subyacente adecuado para la cola incluyen deque y lista, o cualquier otro contenedor de secuencia que admite las operaciones de front, Atrás, push_back, y pop_front. La clase de contenedor subyacente se encapsula dentro del adaptador de contenedor, que solo expone el conjunto limitado de las funciones miembro de contenedor de secuencias como una interfaz pública.

Objetos de la cola son igualdad comparable si y solo si los elementos de la clase tipo son comparables igualdad, y menor-que comparable si y solo si los elementos de la clase tipo son menores-que comparable.

Hay tres tipos de adaptadores de contenedor definidos por la STL: pila, cola y priority_queue. Cada uno restringe la funcionalidad de alguna clase de contenedor subyacente para proporcionar una interfaz con precisión controlada a una estructura de datos estándar.

  • El stack (clase) es compatible con una estructura de datos, último en salir (LIFO). Un buen símil sería una pila de platos. Solo se pueden insertar e inspeccionar elementos (platos) en la parte superior de la pila, que es el último elemento al final del contenedor base, y solo se pueden quitar de ahí. La restricción de acceder únicamente al elemento superior es el motivo por el que se usa la clase stack.

  • Queue (clase) es compatible con una estructura de datos, primero en salir (FIFO). Un buen símil sería el de personas que hacen cola en un banco. Se pueden agregar elementos (personas) a la parte posterior de la línea y quitarlos de la parte delantera de la línea. Se puede inspeccionar tanto la parte delantera como trasera de una línea. La restricción de acceso a sólo los elementos de portada y contraportados de esta manera es la razón para utilizar la clase de la cola.

  • El priority_queue (clase) ordena sus elementos para que siempre es el elemento más grande en la parte superior. Admite la inserción de un elemento y la inspección y eliminación del elemento superior. Un buen símil sería el de personas alineadas y organizadas por edad, altura o cualquier otro criterio.

Constructores

colaConstruye una queue que está vacía o que es una copia de un objeto contenedor base.

Definiciones de tipo

container_typeUn tipo que proporciona el contenedor base debe adaptarse por la queue.
size_typeTipo entero sin signo que puede representar el número de elementos de un queue.
value_typeTipo que representa el tipo de objeto almacenado como elemento en una queue.

Funciones miembro

AtrásDevuelve una referencia a la última y más recientemente agregado el elemento en la copia de la queue.
vacíaComprueba si la queue está vacía.
parte frontalDevuelve una referencia al primer elemento en la parte delantera de la queue.
POPQuita un elemento de la parte delantera de la queue.
inserciónAgrega un elemento a la parte posterior de la queue.
tamañoDevuelve el número de elementos de queue.

Encabezado:<>>

Espacio de nombres: std

Devuelve que una referencia a la última y más recientemente agregado el elemento al final de la cola.

reference back();

const_reference back() const;

Valor devuelto

El último elemento de la cola. Si la cola está vacía, el valor devuelto es indefinido.

Comentarios

Si el valor devuelto de Atrás se asigna a un const_reference, no se puede modificar el objeto de cola. Si el valor devuelto de Atrás se asigna a un referencia, el objeto de cola se puede modificar.

Cuando se compila utilizando _ITERATOR_DEBUG_LEVEL se define como 1 o 2, se producirá un error en tiempo de ejecución si se intenta obtener acceso a un elemento en una cola vacía. Vea Checked Iterators para obtener más información.

Ejemplo

// queue_back.cpp  
// compile with: /EHsc  
#include <queue>  
#include <iostream>  
  
int main( )   
{  
   using namespace std;  
   queue <int> q1;  
  
   q1.push( 10 );  
   q1.push( 11 );  
  
   int& i = q1.back( );  
   const int& ii = q1.front( );  
  
   cout << "The integer at the back of queue q1 is " << i   
        << "." << endl;  
   cout << "The integer at the front of queue q1 is " << ii   
        << "." << endl;  
}  

Un tipo que proporciona el contenedor base debe adaptarse.

typedef Container container_type;  

Comentarios

El tipo es un sinónimo del parámetro de plantilla Container. Dos clases de contenedor de secuencia STL, la lista y una clase predeterminados deque, cumplir los requisitos que se usará como el contenedor base para un objeto de cola. También pueden utilizarse tipos definidos por el usuario que cumpla los requisitos.

Para obtener más información sobre Container, vea la sección Comentarios de la queue clase tema.

Ejemplo

Vea el ejemplo de cola para obtener un ejemplo de cómo declarar y utilizar container_type.

Comprueba si una cola está vacía.

bool empty() const;

Valor devuelto

True si la cola está vacía. false si la cola está vacía.

Ejemplo

// queue_empty.cpp  
// compile with: /EHsc  
#include <queue>  
#include <iostream>  
  
int main( )  
{  
using namespace std;  
  
   // Declares queues with default deque base container  
   queue <int> q1, q2;  
  
   q1.push( 1 );  
  
   if ( q1.empty( ) )  
      cout << "The queue q1 is empty." << endl;  
   else  
      cout << "The queue q1 is not empty." << endl;  
  
   if ( q2.empty( ) )  
      cout << "The queue q2 is empty." << endl;  
   else  
      cout << "The queue q2 is not empty." << endl;  
}  

The queue q1 is not empty.  
The queue q2 is empty.  

Devuelve una referencia al primer elemento en la parte delantera de la cola.

reference front();

const_reference front() const;

Valor devuelto

El primer elemento de la cola. Si la cola está vacía, el valor devuelto es indefinido.

Comentarios

Si el valor devuelto de front se asigna a un const_reference, no se puede modificar el objeto de cola. Si el valor devuelto de front se asigna a un referencia, el objeto de cola se puede modificar.

La función miembro devuelve un referencia al primer elemento de la secuencia controlada, que debe estar vacío.

Cuando se compila utilizando _ITERATOR_DEBUG_LEVEL se define como 1 o 2, se producirá un error en tiempo de ejecución si se intenta obtener acceso a un elemento en una cola vacía. Vea Checked Iterators para obtener más información.

Ejemplo

// queue_front.cpp  
// compile with: /EHsc  
#include <queue>  
#include <iostream>  
  
int main() {  
   using namespace std;  
   queue <int> q1;  
  
   q1.push( 10 );  
   q1.push( 20 );  
   q1.push( 30 );  
  
   queue <int>::size_type i;  
   i = q1.size( );  
   cout << "The queue length is " << i << "." << endl;  
  
   int& ii = q1.back( );  
   int& iii = q1.front( );  
  
   cout << "The integer at the back of queue q1 is " << ii   
        << "." << endl;  
   cout << "The integer at the front of queue q1 is " << iii   
        << "." << endl;  
}  

Quita un elemento de la parte delantera de la cola.

void pop();

Comentarios

La cola debe estar vacía para aplicar la función miembro. La parte superior de la cola es la posición ocupada por el elemento agregado más recientemente y el último elemento al final del contenedor.

Ejemplo

// queue_pop.cpp  
// compile with: /EHsc  
#include <queue>  
#include <iostream>  
  
int main( )  
{  
   using namespace std;  
   queue <int> q1, s2;  
  
   q1.push( 10 );  
   q1.push( 20 );  
   q1.push( 30 );  
  
   queue <int>::size_type i;  
   i = q1.size( );  
   cout << "The queue length is " << i << "." << endl;  
  
   i = q1.front( );  
   cout << "The element at the front of the queue is "  
        << i << "." << endl;  
  
   q1.pop( );  
  
   i = q1.size( );  
   cout << "After a pop the queue length is "   
        << i << "." << endl;  
  
   i = q1. front ( );  
   cout << "After a pop, the element at the front of the queue is "  
        << i << "." << endl;  
}  

The queue length is 3.  
The element at the front of the queue is 10.  
After a pop the queue length is 2.  
After a pop, the element at the front of the queue is 20.  

Agrega un elemento al final de la cola.

void push(const Type& val);

Parámetros

val
El elemento se agrega al final de la cola.

Comentarios

La parte posterior de la cola es la posición ocupada por el elemento agregado más recientemente y el último elemento al final del contenedor.

Ejemplo

// queue_push.cpp  
// compile with: /EHsc  
#include <queue>  
#include <iostream>  
  
int main( )  
{  
   using namespace std;  
   queue <int> q1;  
  
   q1.push( 10 );  
   q1.push( 20 );  
   q1.push( 30 );  
  
   queue <int>::size_type i;  
   i = q1.size( );  
   cout << "The queue length is " << i << "." << endl;  
  
   i = q1.front( );  
   cout << "The element at the front of the queue is "  
        << i << "." << endl;  
}  

The queue length is 3.  
The element at the front of the queue is 10.  

Construye una cola que está vacío o que es una copia de un objeto contenedor base.

queue();

explicit queue(const container_type& right);

Parámetros

right
El const de que la cola construida es ser una copia del contenedor.

Comentarios

El contenedor base predeterminado para la cola es deque. También puede especificar la lista como un contenedor base, pero no puede especificar vector, porque carece de los necesarios pop_front función miembro.

Ejemplo

// queue_queue.cpp  
// compile with: /EHsc  
#include <queue>  
#include <vector>  
#include <list>  
#include <iostream>  
  
int main( )  
{  
   using namespace std;  
  
   // Declares queue with default deque base container  
   queue <char> q1;  
  
   // Explicitly declares a queue with deque base container  
   queue <char, deque<char> > q2;  
  
   // These lines don't cause an error, even though they  
   // declares a queue with a vector base container  
   queue <int, vector<int> > q3;  
   q3.push( 10 );  
   // but the following would cause an error because vector has   
   // no pop_front member function  
   // q3.pop( );  
  
   // Declares a queue with list base container  
   queue <int, list<int> > q4;  
  
   // The second member function copies elements from a container  
   list<int> li1;  
   li1.push_back( 1 );  
   li1.push_back( 2 );  
   queue <int, list<int> > q5( li1 );  
   cout << "The element at the front of queue q5 is "  
        << q5.front( ) << "." << endl;  
   cout << "The element at the back of queue q5 is "  
        << q5.back( ) << "." << endl;  
}  

The element at the front of queue q5 is 1.  
The element at the back of queue q5 is 2.  

Devuelve el número de elementos en la cola.

size_type size() const;

Valor devuelto

La longitud actual de la cola.

Ejemplo

// queue_size.cpp  
// compile with: /EHsc  
#include <queue>  
#include <iostream>  
  
int main( )  
{  
   using namespace std;  
   queue <int> q1, q2;  
   queue <int>::size_type i;  
  
   q1.push( 1 );  
   i = q1.size( );  
   cout << "The queue length is " << i << "." << endl;  
  
   q1.push( 2 );  
   i = q1.size( );  
   cout << "The queue length is now " << i << "." << endl;  
}  

The queue length is 1.  
The queue length is now 2.  

Un tipo de entero sin signo que puede representar el número de elementos de una cola.

typedef typename Container::size_type size_type;  

Comentarios

El tipo es un sinónimo de la size_type del contenedor base adaptado por la cola.

Ejemplo

Vea el ejemplo de Queue:: front para obtener un ejemplo de cómo declarar y utilizar size_type.

Tipo que representa el tipo de objeto almacenado como un elemento en una cola.

typedef typename Container::value_type value_type;  

Comentarios

El tipo es un sinónimo de la value_type del contenedor base adaptado por la cola.

Ejemplo

// queue_value_type.cpp  
// compile with: /EHsc  
#include <queue>  
#include <iostream>  
  
int main( )  
{  
using namespace std;  
  
   // Declares queues with default deque base container  
   queue<int>::value_type AnInt;  
  
   AnInt = 69;  
   cout << "The value_type is AnInt = " << AnInt << endl;  
  
   queue<int> q1;  
   q1.push(AnInt);  
   cout << "The element at the front of the queue is "  
        << q1.front( ) << "." << endl;  
}  

The value_type is AnInt = 69  
The element at the front of the queue is 69.  

Seguridad para subprocesos en la biblioteca estándar de C++
Biblioteca de plantillas estándar

Mostrar: