Deque en la biblioteca de plantillas estándar (STL) de C++

Las colas de dos extremos son contenedores de secuencias con la función de expansión y contracción en ambos extremos. Son similares a los vectores, pero son más eficientes en caso de inserción y eliminación de elementos. A diferencia de los vectores, es posible que no se garantice la asignación de almacenamiento contiguo. 
Las colas de doble terminación son básicamente una implementación de la cola de doble terminación de la estructura de datos. Una estructura de datos de cola permite la inserción solo al final y la eliminación desde el frente. Esto es como una cola en la vida real, en la que las personas se eliminan del frente y se agregan en la parte posterior. Las colas de dos extremos son un caso especial de colas donde las operaciones de inserción y eliminación son posibles en ambos extremos.
Las funciones para deque son las mismas que vector ., con la adición de operaciones push y pop tanto para el anverso como para el reverso.  

Las complejidades de tiempo para hacer varias operaciones en deques son:

  • Accediendo a Elementos- O(1)
  • Inserción o extracción de elementos- O(N)
  • Inserción o eliminación de elementos al inicio o al final- O(1)

CPP

// CPP Program to implement Deque in STL
#include <deque>
#include <iostream>
  
using namespace std;
  
void showdq(deque<int> g)
{
    deque<int>::iterator it;
    for (it = g.begin(); it != g.end(); ++it)
        cout << '\t' << *it;
    cout << '\n';
}
  
int main()
{
    deque<int> gquiz;
    gquiz.push_back(10);
    gquiz.push_front(20);
    gquiz.push_back(30);
    gquiz.push_front(15);
    cout << "The deque gquiz is : ";
    showdq(gquiz);
  
    cout << "\ngquiz.size() : " << gquiz.size();
    cout << "\ngquiz.max_size() : " << gquiz.max_size();
  
    cout << "\ngquiz.at(2) : " << gquiz.at(2);
    cout << "\ngquiz.front() : " << gquiz.front();
    cout << "\ngquiz.back() : " << gquiz.back();
  
    cout << "\ngquiz.pop_front() : ";
    gquiz.pop_front();
    showdq(gquiz);
  
    cout << "\ngquiz.pop_back() : ";
    gquiz.pop_back();
    showdq(gquiz);
  
    return 0;
}
Producción

The deque gquiz is :     15    20    10    30

gquiz.size() : 4
gquiz.max_size() : 4611686018427387903
gquiz.at(2) : 10
gquiz.front() : 15
gquiz.back() : 30
gquiz.pop_front() :     20    10    30

gquiz.pop_back() :     20    10

CPP-STL-Self-Paced-Course

Métodos de Deque

Método

Definición

deque::insertar() Inserta un elemento. Y devuelve un iterador que apunta al primero de los elementos recién insertados.
deque::rbegin() Devuelve un iterador inverso que apunta al último elemento de la deque (es decir, su comienzo inverso).
deque::rend() Devuelve un iterador inverso que apunta a la posición antes del comienzo de la deque (que se considera su final inverso).
deque::cbegin() Devuelve un iterador constante que apunta al primer elemento del contenedor, es decir, el iterador no se puede usar para modificar, solo para atravesar el deque.
deque::max_size() Devuelve el número máximo de elementos que puede contener un contenedor deque.
deque::asignar() Asigne valores al mismo o diferente contenedor deque.
deque::redimensionar()  Función que cambia el tamaño del deque.
deque::push_front() Se utiliza para empujar elementos en un deque desde el frente.
deque::push_back()  Esta función se utiliza para insertar elementos en un deque desde atrás.
deque::pop_front() y deque::pop_back() La función pop_front() se usa para hacer estallar o eliminar elementos de un deque desde el frente. La función pop_back() se usa para hacer estallar o eliminar elementos de un deque desde atrás.
deque::front() y deque::back() La función front() se usa para hacer referencia al primer elemento del contenedor deque. La función back() se utiliza para hacer referencia al último elemento del contenedor deque.
deque::clear() y deque::erase()  La función clear() se utiliza para eliminar todos los elementos del contenedor deque, lo que hace que su tamaño sea 0. La función erase() se utiliza para eliminar elementos de un contenedor desde la posición o rango especificado.
deque::empty() y deque::size() La función empty() se utiliza para comprobar si el contenedor deque está vacío o no. La función size() se usa para devolver el tamaño del contenedor deque o el número de elementos en el contenedor deque.
deque::operador= y deque::operador[] operator= operator se utiliza para asignar nuevos contenidos al contenedor reemplazando los contenidos existentes. operator[] El operador se usa para hacer referencia al elemento presente en la posición dada dentro del operador.
deque::at() y deque::swap() La función at() se utiliza para hacer referencia al elemento presente en la posición dada como parámetro de la función. La función swap() se utiliza para intercambiar el contenido de una deque con otra deque del mismo tipo y tamaño.
deque::begin() y deque::end  La función begin() se usa para devolver un iterador que apunta al primer elemento del contenedor deque. La función end() se usa para devolver un iterador que apunta al último elemento del contenedor deque.
deque::emplace_front() y deque::emplace_back()  La función emplace_front() se usa para insertar un nuevo elemento en el contenedor deque. El nuevo elemento se agrega al principio del deque. La función emplace_back() se usa para insertar un nuevo elemento en el contenedor deque. El nuevo elemento se agrega al final del deque.

Artículos recientes en Deque
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente. 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *