Función de c ++ deque

Función de c ++ deque
La Biblioteca de plantilla estándar (STL) también proporciona una clase llamada "deque" que implementa todas las funcionalidades para esta estructura de datos. Un contenedor secuencial que funciona como una estructura de datos de cola de doble extremo en C ++ se denomina STL Deque.

Los elementos a menudo se agregan desde la parte posterior y se eliminan del frente en una cola normal. En contraste, podemos agregar y eliminar los componentes de la parte delantera y trasera de un deque. La implementación de un deque en C ++ se puede hacer utilizando una matriz o una lista vinculada.

A continuación se muestra una lista de la implementación de la matriz de Deque. Utilizamos las matrices circulares para implementarlo porque es una cola de doble extremo. La cola de doble extremo es más rápida y más eficiente que cualquier otra cola cuando se trata de agregar y eliminar los componentes de ambos extremos.

Representación de Deque

Los aspectos que requieren mucho tiempo de hacer varios procesos de Deque incluyen:

  • Llegar a los elementos: o (1)
  • Adición o eliminación de elementos- o (n)
  • Adición o eliminación de componentes al comienzo del extremo (1)

Tipos de deque

Echemos ver los tipos relacionados con Deque en C++.

Entrada restringida Deque

La entrada se confina en un extremo pero se permite en los otros dos.

Salida restringida deque

En este deque, la salida está prohibida en un extremo, pero la inserción está permitida en ambos extremos.

Creación de la función de c ++ deque

Primero debemos incluir el archivo de encabezado Deque para generar un deque en c++.

#incluir

Después de importar este archivo, la siguiente sintaxis se puede usar para generar un DEQUE:

# Dee deque-nombre;

El tipo de datos que nos gustaría almacenar en el deque está indicado por el tipo de objeto en este caso. Por ejemplo: int, float, string, etc. Deque-Name es un nombre variable para los datos que vamos a usar.

Inicialización de la función de deque

En C ++, la función deque se puede inicializar de las siguientes maneras:

deparar arr = 1, 3, 7, 0, 5, 8;
deparar arr 1, 3, 7, 0, 5, 8;

Ambos métodos se utilizan para inicializar Deque. En ambos nombres de Deque, "ARR" se inicializa con los valores enteros 1, 3, 7, 0, 5, 8.

Métodos de Deque

Los siguientes son los métodos de Deque:

  • Insertar(): Agrega un nuevo elemento y devuelve un iterador con el primero de los elementos recién agregados como punto.
  • Rbegin (): Genera un iterador inverso que apunta al último valor del deque.
  • Desgarrar(): Genera un iterador inverso con una posición inicial antes del origen del deque.
  • Cbegin (): Devuelve un iterador constante que siempre apunta al primer elemento del contenedor; Como resultado, el iterador solo se puede utilizar para atravesar el deque y no modificarse.
  • Tamaño máximo(): Esta función devuelve el número de elementos de los elementos que puede contener un contenedor Deque.
  • Asignar(): Utilizado para asignar valores a un contenedor deque que es el mismo o diferente.
  • Cambiar el tamaño (): Función que se utiliza para modificar el tamaño del deque.
  • Hacer retroceder(): Con la ayuda de esta función, los componentes se pueden agregar desde la parte trasera en un deque.
  • Frente(): Se utiliza para referirse al elemento inicial del contenedor de Dque.
  • Atrás(): Se utiliza para referirse al último elemento del contenedor de Deque.
  • Claro(): Se usa para eliminar todos los elementos de Deque reduciendo su tamaño a 0.
  • Borrar(): Se utiliza para eliminar los objetos de un contenedor desde cierto punto o rango.
  • Deque :: vacía ():: Se usa para determinar si el deque está vacío.
  • Operador =: Se utiliza para asignar un nuevo datos al contenedor e intercambiar los viejos.
  • Operador[]: Se utiliza para referirse al elemento en el operador en el lugar especificado.
  • En(): Se utiliza para referirse al componente presente en la ubicación especificada como el parámetro de la función.
  • Intercambio(): Esta función se utiliza para intercambiar los deques del mismo tipo de datos.
  • Comenzar(): Se utiliza para proporcionar un iterador que apunte al objeto inicial del contenedor de Dque.
  • Emplace_front ():: Se inserta un nuevo elemento en el contenedor Deque utilizando esta función. El comienzo del deque se modifica para incluir el componente adicional.
  • Emplace_back (): Se utiliza para agregar un nuevo valor al contenedor de Dque. El nuevo componente se incluye al final del deque.

Estructura de datos Deque

Verifiquemos los detalles de la estructura de datos delque en la siguiente sección:

Procedimientos en un deque

Estos pasos deben seguirse antes de llevar a cabo las operaciones posteriores:

Paso 1: Tome una matriz n-dimensional (deque). En la primera posición, coloque dos punteros y establezca front = -1 y trasero = 0.

Establezca una matriz de Deque y consejos.

Inserción en el frente

Paso 1: Esta acción agrega un componente al frente. Revise la ubicación del frente.

Si el frente es inferior a 5, restablezca el frente a N-1 (último índice).

Paso 2: Reduzca el frente por 1 si es necesario. Ahora, agregue la nueva llave n a la matriz [front]. Supongamos que n = 6.

Inserción en la parte trasera

Paso 1: Esta acción agrega un componente a la rara. Asegúrese de que la matriz no esté llena.

Paso 2: Si la cola está llena, restablezca el valor trasero a 0 (r = 0). De lo contrario, levante lo raro por 1.

Paso 3: En una matriz [trasera], agregue la nueva llave 6.

Retirar del frente

Paso 1: Se elimina un elemento en el frente durante el proceso. Asegúrate de que el deque no esté vacío.

Paso 2: La eliminación no es posible si el deque está vacío (front = -1) (condición de flujo subterráneo). Establezca el front = -1 solamente y el trasero = -1 si el deque consta de un elemento como delantero = trasero. Asigne el valor al frente (frente = 0) si el frente está al final (front = n - 1). Si no, configure el frente a la parte delantera = Frente+1.

Retirar de la parte posterior

Paso 1: Se elimina un elemento al final durante el proceso. Asegúrate de que el deque no esté vacío.

Paso 2: La eliminación no es posible si el deque está vacío (front = -1) (condición de flujo subterráneo). Establezca el frente = -1 y el trasero = -1 si el deque solo tiene un solo elemento (delantero = trasero). De lo contrario, continúe con los siguientes pasos. Movemos hacia la parte delantera, trasera = n - 1 si la parte trasera está en la parte delantera (trasera = 0). Si no, configure el raro = raro-1.

Ejemplo 1: Creación de Deque

En este ejemplo, creamos un deque. Primero incluimos nuestros archivos de encabezado "#include" y #include donde #include ordena al preprocesador que incluya el archivo de encabezado iOStream y deque que contiene todas las funciones del programa.

#incluir
#incluir
usando el espacio de nombres STD;
void display_deque (deque);
int main ()
Deque Mydeque 4, 2, 7, 5, 8;
cout << "mydeque values are = ";
para (int var: mydeque)
cout << var << ", ";

regresar 0;

Después de eso, describimos una función de pantalla _deque que se usa para ejecutar los valores de Dque que le asignamos.

Pasando a nuestra función principal, el int main () indica que nuestra función debe devolver un valor entero al final de la ejecución, lo que hacemos devolviendo 0 a la conclusión del programa utilizando una inicialización uniforme "Deque Mydeque 4, 2, 7 , 5,8 ". En este "int" es el tipo de datos de valores que asignamos y Mydeque es el nombre que utilizamos para nuestro deque. Asignamos los valores enteros al deque llamado Mydeque que son 4, 2, 7, 5, 8. Para mostrar nuestro deque, utilizamos el bucle for a un tamaño fijo. Y luego, presionamos el botón Run o F7 para obtener la salida del programa.

Ejemplo 2: Agregar más valores a un deque

En este ejemplo, agregamos más valores a un deque. Después de agregar los archivos de encabezado requeridos para este programa, pasamos a nuestra función principal del tipo de datos enteros "Deque var 0, 1, 2". En este "int" es el tipo de datos de valores que asignamos y "var" es el nombre que utilizamos para nuestro deque. Asignamos los valores enteros al deque llamado "var" que son 0, 1 y 2. Luego, empujamos dos elementos, el elemento 8 en la parte delantera del deque y el elemento 5 al final del deque, usando las funciones push_front () y push_back () del deque. Entonces, el deque resultante que tenemos es 8, 0, 1 y 5.

#incluir
#incluir
usando el espacio de nombres STD;
int main ()
deque var 0, 1, 2;
cout << "Initial Deque values are: ";
for (const int & var: var)
cout << var << ", ";

varilla.push_back (5);
varilla.push_front (8);
cout << "\nFinal Deque values are: ";
for (const int & var: var)
cout << var << ", ";

regresar 0;

Una vez que hayamos terminado con la codificación de este ejemplo, lo compilamos y lo ejecutamos en cualquier compilador. El resultado representa la salida esperada del código anterior.

Ejemplo 3: Actualización de elementos en índices especificados

En este ejemplo, actualizamos los valores en un deque después de incluir nuestros archivos de encabezado "#include" y "#include" para este código ejecutable.

#incluir
#incluir
usando el espacio de nombres STD;
int main ()
deque var = 1, 2;
cout << "Initial Deque values are: ";
for (const int & var: var)
cout << var << ", ";

varilla.AT (0) = 3;
varilla.a (1) = 4;
cout << "\nUpdated Deque values are: ";
for (const int & var: var)
cout << var << ", ";

regresar 0;

Ahora, vamos hacia nuestra función principal en la que inicializamos por primera vez nuestro deque llamado "var" con los valores 1 y 2. Luego, usamos un bucle for para mostrar los valores de nuestro deque inicializado. Para actualizar los valores de DEQUE, usamos la función AT () (como sabemos, la función AT () se usa para referirse a la posición especificada en el deque) en el índice 0 y 1, asignando nuevos valores a "var". Estos son 3 y 4. Entonces, nuestra Dequeue actualizada es 3 y 4. Después de preparar nuestro código, lo compilamos utilizando cualquier herramienta de compilador. Aquí está el resultado deseado de nuestro código:

Ejemplo 4: Uso de iterador para eliminar los valores

En este ejemplo, usamos los iteradores para acceder a los elementos en el deque. Un objeto que apunta a un elemento dentro de un contenedor se llama iterador.

#incluir
#incluir
usando el espacio de nombres STD;
int main ()
deque var 0, 3, 5, 8;
deque :: iterator var_iter;
var_iter = var.comenzar();
int first_element = *var_iter;
cout << "var[0] = " << first_element << endl;
var_iter = var.begin () + 1;
int elemento_index1 = *var_iter;
cout << "var[1] = " << element_index1 << endl;
var_iter = var.end () - 1;
int last_element = *var_iter;
cout << "var[2] = " << last_element;
regresar 0;

Se puede iterarse hacia adelante y hacia atrás usando el deque :: cbegin y deque :: cend, y en ambos sentidos usando el deque :: crbegin y deque :: crend.

Inicialmente, creamos un iterador que puede señalar un deque de enteros llamado "var". Luego, señalamos los siguientes elementos usando el iterador "var_inter". El iterador que el método begin () devuelve apunta al primer elemento. El "Begin () + 1" genera un iterador usando el índice 1 del elemento como punto de partida. Como puede ver, usamos el var.end () - 1 en lugar del var.fin().

Esto se debe a que el método iterador para el método End () se enlaza a un iterador que pasa el último elemento. Para obtener el último elemento, deducimos 1. Usamos el operador de indirección * para obtener el valor de un elemento después de usar el inter_var para apuntarlo.

Operaciones de Deque

Las operaciones fundamentales que se pueden llevar a cabo en Deque son las siguientes:

  • Inserto se usa generalmente para agregar o insertar algo en la parte delantera del deque.
  • Insertar o agregar algo al final del deque usando el insertlast dominio.
  • eliminar se usa para eliminar el elemento del frente de la cola eliminándolo.
  • eliminar final En esto, el artículo debe eliminarse o moverse al final de la cola.
  • Obtenga el primer elemento en el deque usando el hacer frente a método.
  • Obtenga el último elemento en la cola usando el obtener ultimo método.
  • esta vacio se usa para verificar si el deque es nulo.
  • está lleno se usa para determinar si el deque está lleno.

Conclusión

Deque es la mejor opción porque es más rápido y ayuda al código a funcionar más rápidamente. El Deque funciona mejor para secuencias de registro. Este artículo se basa en la implementación de Deque y sus principales métodos, que nos ayudan a modificar el deque de acuerdo con nuestras necesidades. Nuestro objetivo es explicar el deque y sus métodos, así como con ejemplos de cómo usar el deque y cuándo usarlo. La herramienta que usamos para implementar el código es el compilador C ++. Hicimos un esfuerzo sincero para hacer que este tutorial sea lo más simple y comprensible para usted posible.