Funzione c ++ deque

Funzione c ++ deque
La libreria di modelli standard (STL) fornisce anche una classe chiamata "Deque" che implementa tutte le funzionalità per questa struttura di dati. Un contenitore sequenziale che funziona come una struttura di dati in coda a doppia estremità in C ++ è chiamato STL DEQUE.

Gli elementi vengono spesso aggiunti dalla parte posteriore e rimossi dalla parte anteriore in una coda normale. Al contrario, possiamo aggiungere e rimuovere i componenti dalla parte anteriore e posteriore di un deque. L'implementazione di un deque in C ++ può essere eseguita utilizzando un array o un elenco collegato.

Di seguito è riportato un elenco dell'implementazione dell'array di Deque. Abbiamo utilizzato gli array circolari per implementarli perché è una coda a doppia estremità. La coda a doppia estremità è più veloce ed efficiente di qualsiasi altra coda quando si tratta di aggiungere e rimuovere i componenti da entrambe le estremità.

Rappresentazione di Deque

Gli aspetti che richiedono tempo nel fare vari processi Deque includono:

  • Arrivare agli elementi: o (1)
  • Elemento aggiunta o eliminazione o (n)
  • Aggiunta o cancellazione di componenti all'inizio della fine (1)

Tipi di deque

Dai un'occhiata ai tipi relativi a Deque in C++.

Input DEque limitato

L'input è limitato ad un'estremità ma consentito agli altri due.

Output limitato deque

In questo deque, l'output è vietato ad un'estremità, ma l'inserimento è consentito ad entrambe le estremità.

Creazione della funzione C ++ Deque

Dobbiamo prima includere il file di intestazione Deque per generare un deque in c++.

#includere

Dopo aver importato questo file, è possibile utilizzare la seguente sintassi per generare un deque:

# Deque deque-name;

Il tipo di dati che vorremmo archiviare nel deque è indicato da un tipo di oggetto in questo caso. Ad esempio: int, galleggiante, stringa, ecc. Deque-Name è un nome variabile per i dati che useremo.

Inizializzazione della funzione Deque

In C ++, la funzione Deque può essere inizializzata nei seguenti modi:

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

Entrambi questi metodi sono usati per inizializzare Deque. In entrambi questi nomi Deque, "arr" viene inizializzato con i valori interi 1, 3, 7, 0, 5, 8.

Metodi di Deque

Di seguito sono riportati i metodi di Deque:

  • Inserire(): Aggiunge un nuovo elemento e restituisce un iteratore con il primo degli elementi appena aggiunti come punto.
  • Rbegin (): Genera un iteratore inverso che punta all'ultimo valore di Deque.
  • Rend (): Genera un iteratore inverso con una posizione iniziale prima dell'origine di Deque.
  • Cbegin (): Restituisce un iteratore costante che punta sempre al primo elemento del contenitore; Di conseguenza, l'iteratore può essere utilizzato solo per attraversare il deque e non essere modificato.
  • Max_size (): Il numero di elementi che un contenitore deque può trattenere viene restituito da questa funzione.
  • Assegnare(): Utilizzato per assegnare valori a un contenitore deque uguale o diverso.
  • Ridimension (): Funzione che viene utilizzata per modificare la dimensione di Deque.
  • Respingere(): Con l'aiuto di questa funzione, i componenti possono essere aggiunti dalla parte posteriore in un deque.
  • Davanti(): Viene utilizzato per fare riferimento all'elemento iniziale del contenitore Deque.
  • Indietro(): Viene utilizzato per fare riferimento all'ultimo elemento del contenitore Deque.
  • Chiaro(): Viene utilizzato per liberare tutti gli elementi da Deque riducendo le sue dimensioni a 0.
  • Cancellare(): Utilizzato per eliminare gli oggetti da un contenitore da un certo punto o intervallo.
  • Deque :: vuoto (): È usato per determinare se il deque è vuoto.
  • Operatore =: Utilizzato per allocare nuovi dati al contenitore e scambiare quelli vecchi.
  • Operatore[]: Utilizzato per fare riferimento all'elemento nell'operatore nel luogo specificato.
  • A(): Utilizzato per fare riferimento al componente presente nella posizione specificata come parametro della funzione.
  • Scambio(): Questa funzione viene utilizzata per scambiare i deques dello stesso tipo di dati.
  • Inizio(): Viene utilizzato per fornire un iteratore che punta all'oggetto iniziale del contenitore Deque.
  • Emplace_front (): Un nuovo elemento viene inserito nel contenitore Deque usando questa funzione. L'inizio del deque è modificato per includere il componente aggiuntivo.
  • Emplace_back (): Utilizzato per aggiungere un nuovo valore al contenitore Deque. Il nuovo componente è incluso alla fine del deque.

DEQUE-Struttura dei dati

Controlliamo i dettagli della struttura dei dati Deque nella sezione seguente:

Procedure su un deque

Questi passaggi devono essere seguiti prima di eseguire le operazioni successive:

Passo 1: Prendi un array n-dimensionale (Deque). In prima posizione, posizionare due puntatori e set anteriore = -1 e posteriore = 0.

Imposta un array e puntatori Deque.

Inserimento nella parte anteriore

Passo 1: Questa azione aggiunge un componente davanti. Controlla la posizione del fronte.

Se la parte anteriore è inferiore a 5, ripristinare la parte anteriore su N-1 (ultimo indice).

Passo 2: Ridurre la parte anteriore di 1 se necessario. Ora, aggiungi la nuova chiave N all'array [fronte]. Supponiamo che n = 6.

Inserimento nella parte posteriore

Passo 1: Questa azione aggiunge un componente al raro. Assicurati che l'array non sia pieno.

Passo 2: Se la coda è piena, ripristinare il valore posteriore a 0 (r = 0). Altrimenti, solleva il raro di 1.

Passaggio 3: In un array [posteriore], aggiungi la nuova chiave 6.

Togliere dalla parte anteriore

Passo 1: Un elemento nella parte anteriore viene rimosso durante il processo. Assicurati che il deque non sia vuoto.

Passo 2: La cancellazione non è possibile se il deque è vuoto (anteriore = -1) (condizione di underflow). Imposta solo il fronte = -1 e la parte posteriore = -1 se il deque è costituito da un elemento come anteriore = posteriore. Assegna il valore alla parte anteriore (anteriore = 0) se la parte anteriore è all'estremità (anteriore = n - 1). In caso contrario, impostare la parte anteriore su fronte = anteriore+1.

Togliere dalla parte posteriore

Passo 1: Un elemento alla fine viene rimosso durante il processo. Assicurati che il deque non sia vuoto.

Passo 2: La cancellazione non è possibile se il deque è vuoto (anteriore = -1) (condizione di underflow). Imposta il fronte = -1 e la parte posteriore = -1 se il deque ha solo un singolo elemento (anteriore = posteriore). Altrimenti, procedere con i seguenti passaggi. Spostamo verso la parte anteriore, posteriore = n - 1 se la parte posteriore è sulla parte anteriore (posteriore = 0). In caso contrario, imposta il raro = raro-1.

Esempio 1: creazione di deque

In questo esempio, creiamo un deque. Includiamo innanzitutto i nostri file di intestazione "#include" e #include in cui #include comanda il preprocessore per includere il file di intestazione iostream e deque che contiene tutte le funzioni del programma.

#includere
#includere
Utilizzo dello spazio dei nomi std;
void display_deque (deque);
int main ()
deque mydeque 4, 2, 7, 5, 8;
cout << "mydeque values are = ";
per (int var: mydeque)
cout << var << ", ";

restituzione 0;

Successivamente, descriviamo una funzione di visualizzazione _deque utilizzata per eseguire i valori deque che ci assegniamo.

Spostandosi nella nostra funzione principale, l'int main () indica che la nostra funzione deve restituire un valore intero alla fine dell'esecuzione, cosa che facciamo restituendo 0 alla conclusione del programma usando un'iniforme di inizializzazione "Deque Mydeque 4, 2, 7 , 5,8 ". In questo "int" è il tipo di dati di valori che abbiamo assegnato e Mydeque è il nome che abbiamo usato per il nostro deque. Abbiamo assegnato i valori interi al deque chiamato Mydeque che sono 4, 2, 7, 5, 8. Per visualizzare il nostro deque, abbiamo usato il ciclo per una dimensione fissa. E poi, abbiamo premuto il pulsante Run o F7 per ottenere l'output del programma.

Esempio 2: aggiunta di più valori a un deque

In questo esempio, aggiungiamo più valori a un deque. Dopo aver aggiunto i file di intestazione richiesti per questo programma, ci spostiamo nella nostra funzione principale del tipo di dati interi "deque var 0, 1, 2". In questo "int" è il tipo di dati di valori che abbiamo assegnato e "var" è il nome che abbiamo usato per il nostro deque. Assegniamo i valori interi al deque denominato "var" che sono 0, 1 e 2. Quindi, spingiamo due elementi, l'elemento 8 nella parte anteriore del deque e l'elemento 5 all'estremità del deque, usando le funzioni di push_front () e push_back () del deque. Quindi, il deque risultante che abbiamo è 8, 0, 1 e 5.

#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()
deque var 0, 1, 2;
cout << "Initial Deque values are: ";
per (const int & var: var)
cout << var << ", ";

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

restituzione 0;

Una volta che abbiamo finito con la codifica di questo esempio, lo compiliamo ed eseguiamo in qualsiasi compilatore. Il risultato raffigura l'output previsto del codice precedente.

Esempio 3: aggiornamento degli elementi su indici specificati

In questo esempio, aggiorniamo i valori in un deque dopo aver incluso i nostri file di intestazione "#include" e "#include" per questo codice eseguibile.

#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()
deque var = 1, 2;
cout << "Initial Deque values are: ";
per (const int & var: var)
cout << var << ", ";

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

restituzione 0;

Ora andiamo verso la nostra funzione principale in cui abbiamo inizializzato per la prima volta il nostro deque chiamato "var" con i valori 1 e 2. Quindi, utilizziamo un ciclo per visualizzare i valori del nostro deque inizializzato. Per aggiornare i valori deque, utilizziamo la funzione At () (come sappiamo, la funzione AT () viene utilizzata per fare riferimento alla posizione specificata in Deque) a indice 0 e 1, assegnando nuovi valori a "var". Questi sono 3 e 4. Quindi, il nostro dequeue aggiornato è 3 e 4. Dopo aver preparato il nostro codice, lo compiliamo utilizzando qualsiasi strumento di compilatore. Ecco l'output desiderato del nostro codice:

Esempio 4: usando iterator per rimuovere i valori

In questo esempio, usiamo gli iteratori per accedere agli elementi nel Deque. Un oggetto che punta a un elemento all'interno di un contenitore è chiamato iteratore.

#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()
deque var 0, 3, 5, 8;
deque :: iterator var_iter;
var_iter = var.inizio();
int first_element = *var_iter;
cout << "var[0] = " << first_element << endl;
var_iter = var.inizio () + 1;
int element_index1 = *var_iter;
cout << "var[1] = " << element_index1 << endl;
var_iter = var.end () - 1;
int last_element = *var_iter;
cout << "var[2] = " << last_element;
restituzione 0;

Deque può essere iterato sia in avanti che all'indietro usando il deque :: cbegin e deque :: cend, e in entrambi i modi usando il deque :: crbegin e deque ::.

Inizialmente, abbiamo creato un iteratore che può indicare un deque di numeri interi denominati "var". Quindi, abbiamo indicato i seguenti elementi usando l'iteratore "var_inter". L'iteratore che il metodo iniziale () restituisce i punti al primo elemento. "Begin () + 1" genera un iteratore usando l'indice dell'elemento 1 come punto di partenza. Come puoi vedere, usiamo il var.end () - 1 anziché il var.FINE().

Questo perché l'iteratore per il metodo end () si collega a un iteratore che passa dall'ultimo elemento. Per ottenere l'ultimo elemento, deduciamo 1. Usiamo l'operatore indirezione * per ottenere il valore di un elemento dopo aver usato l'Inter_var per indicarlo.

Operazioni di Deque

Le operazioni fondamentali che possono essere eseguite su Deque sono le seguenti:

  • Insertfront di solito viene utilizzato per aggiungere o inserire qualcosa nella parte anteriore del deque.
  • Inserire o aggiungere qualcosa alla fine del deque usando il insertlast comando.
  • ELETEFRONT viene utilizzato per rimuovere l'articolo dalla parte anteriore della coda eliminandolo.
  • Rimuovere la finale In questo l'articolo deve essere eliminato o spostato alla fine della coda.
  • Ottieni il primo elemento nel Deque usando il getfront metodo.
  • Ottieni l'ultimo elemento in coda usando il getlast metodo.
  • è vuoto viene utilizzato per verificare se il deque è nullo.
  • è pieno viene utilizzato per determinare se il deque è pieno.

Conclusione

Deque è l'opzione più grande perché è più veloce e aiuta il codice a funzionare più rapidamente. Il deque funziona meglio per le sequenze di registri. Questo articolo si basa sull'implementazione di Deque e sui suoi metodi principali, che ci aiutano a modificare il Deque in base alle nostre esigenze. Miriamo a spiegare il deque e i suoi metodi, nonché con esempi di come usare il deque e quando usarlo. Lo strumento che abbiamo usato per implementare il codice è il compilatore C ++. Abbiamo fatto uno sforzo sincero per rendere questo tutorial il più semplice e comprensibile per te.