EVAP 2

<deque>
Introducción:

Parte de la STL relativa a contenedores tipo deque; un tipo de colas: "Double-ended-queue"

<deque> (generalmente pronunciado como "cubierta") es un acrónimo irregular de cola de dos extremos. Colas de dos extremos son contenedores de secuencias con tamaños dinámicos que pueden ampliarse o reducirse en ambos extremos (ya sea en su frente o en su espalda).

Bibliotecas específicas pueden aplicar deques de diferentes maneras, en general, como una forma de matriz dinámica. Pero en cualquier caso, que permiten a los elementos individuales que se accede directamente a través de iteradores de acceso aleatorio, con el almacenamiento manejado automáticamente por expansión y contracción del recipiente según sea necesario.

Por lo tanto, proporcionan una funcionalidad similar a los vectores, pero con la inserción y supresión de elementos eficiente también al principio de la secuencia, y no sólo en su extremo. Pero, a diferencia de los vectores, deques no están garantizados para almacenar todos sus elementos en lugares de almacenamiento contiguos: elementos de acceso en un deque desplazando un puntero a otro elemento provoca un comportamiento indefinido.

Ambos vectores y deques proporcionan una interfaz muy similar y pueden ser utilizados para fines similares, pero internamente tanto el trabajo de maneras muy diferentes: mientras que los vectores utilizan una única matriz que necesita ser reasignado de vez en cuando para el crecimiento, los elementos de un deque pueden estar dispersos en diferentes trozos de almacenamiento, con el recipiente manteniendo la información necesaria internamente para proporcionar acceso directo a cualquiera de sus elementos en tiempo constante y con una interfaz secuencial uniforme (a través de iteradores). Por lo tanto, deques son un poco más complejo internamente que los vectores, pero esto les permite crecer de manera más eficiente, en determinadas circunstancias, especialmente con secuencias muy largas, en las reasignaciones se vuelven más caros.

Para las operaciones que implican la inserción o el traslado de los elementos en las posiciones que no sean el comienzo o el final frecuentes, deques realizar peor y tener iteradores menos consistentes y referencias que las listas y listas a plazo.

Propiedades de contenedores

Secuencia
     Los elementos en los contenedores de secuencias se ordenan en una estricta secuencia lineal. Los elementos individuales se accede por su posición en esta secuencia. 

Matriz dinámica
     Generalmente implementado como una matriz dinámica, que permite el acceso directo a cualquier elemento en la secuencia y ofrece relativamente rápido adición / eliminación de elementos en el principio o el final de la secuencia.

Becario cuenta
     El contenedor utiliza un objeto asignador para manejar dinámicamente sus necesidades de almacenamiento.

Parámetros de plantilla

T
     Tipo de los elementos.
     Alias, tal como tipo de miembro deque :: value_type.
 
Alloc
     Tipo del objeto de imputación utilizado para definir el modelo de asignación de almacenamiento. Por defecto, se utiliza la plantilla de clase de imputación, que define el modelo de asignación de memoria simple y es-valor independiente.
     Con alias como tipo de miembro deque :: allocator_type.
 

Ejemplo 

#include <iostream>
#include <queue>


using namespace std;

void cola02()
{
  cout << "EJEMPLO SOBRE <deque>" << endl;
  priority_queue<int, deque<int>, greater<int> > p;

  p.push(100);
  p.push(35);
  p.push(12);
  p.push(200);

  while (! p.empty() )
  {
    cout << p.top() << endl;
    p.pop();
  }
  cout << endl;
}

int main(int argc, char *argv[])
{
  cola02();
  system("pause");
  return EXIT_SUCCESS;
}
 


* La salida del programa anterior es:

   12
   35
   100
   200