C ++ Deque -Funktion

C ++ Deque -Funktion
Die Standard -Vorlagenbibliothek (STL) bietet auch eine Klasse mit dem Namen „Deque“, die alle Funktionen für diese Datenstruktur implementiert. Ein sequentieller Container, der als doppelte Warteschlangendatenstruktur in C ++ fungiert, wird als STL-Deque bezeichnet.

Elemente werden häufig von hinten hinzugefügt und in einer normalen Warteschlange von vorne entfernt. Im Gegensatz dazu können wir die Komponenten von vorne und hinten eines Deque hinzufügen und entfernen. Die Implementierung eines Deque in C ++ kann entweder mit einem Array oder einer verknüpften Liste erfolgen.

Unten finden Sie eine Liste der Array -Implementierung des Deque. Wir haben die kreisförmigen Arrays verwendet, um sie zu implementieren, weil es sich um eine Doppel-Warteschlange handelt. Die Doppel-Warteschlange ist schneller und effizienter als jede andere Warteschlange, wenn es darum geht, die Komponenten von beiden Enden hinzuzufügen und zu entfernen.

Deques Darstellung

Zu den zeitaufwändigen Aspekten der Durchführung verschiedener Deque-Prozesse gehören:

  • Elemente ankommen: o (1)
  • Elementzusatz oder Löschung (n)
  • Addition oder Löschen von Komponenten zu Beginn des Endes (1)

Arten von Deque

Schauen wir uns die Typen im Zusammenhang mit Deque in C an++.

Eingabe eingeschränkter Deque

Die Eingabe ist an einem Ende eingesperrt, aber an den anderen beiden zulässig.

Ausgangsbeschränkter Deque

In diesem Deque ist der Ausgang an einem Ende verboten, aber an beiden Enden ist die Einführung zulässig.

Erstellen von C ++ - Deque -Funktion

Wir müssen zunächst die Deque -Header -Datei einschließen, um ein Deque in C zu generieren++.

#enthalten

Nach dem Importieren dieser Datei kann die folgende Syntax verwendet werden, um ein Deque zu generieren:

# Deque deque-name;

Der Datentyp, den wir im Deque speichern möchten, wird in diesem Fall durch Objekttyp angezeigt. Zum Beispiel: INT, Float, String usw. Deque-name ist ein variabler Name für die Daten, die wir verwenden werden.

Deque -Funktion initialisieren

In C ++ kann die Deque -Funktion auf folgende Weise initialisiert werden:

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

Beide Methoden werden verwendet, um die DEQUE zu initialisieren. In diesen beiden Deque -Namen wird „arr“ mit den Ganzzahlwerten 1, 3, 7, 0, 5, 8 initialisiert.

Methoden der Deque

Im Folgenden finden Sie die Methoden der Deque:

  • Einfügung(): Fügt ein neues Element hinzu und gibt einen Iterator mit dem ersten der neu hinzugefügten Elemente als Punkt zurück.
  • Rbegin (): Erzeugt einen umgekehrten Iterator, der auf den letzten Wert des Deque zeigt.
  • Zerreißen(): Erzeugt einen umgekehrten Iterator mit einer Anfangsposition vor dem Ursprung des Deque.
  • Cbegin (): Gibt einen konstanten Iterator zurück, der immer auf das erste Element des Containers zeigt. Infolgedessen kann der Iterator nur verwendet werden, um das Deque zu durchqueren und nicht modifiziert zu werden.
  • Maximale Größe(): Die Anzahl der Elemente, die ein Deque -Container halten kann, wird durch diese Funktion zurückgegeben.
  • Zuordnen(): Wird verwendet, um einem Deque -Container, der gleich oder unterschiedlich ist, Werte zuzuweisen.
  • Größe (): Funktion, die verwendet wird, um die Größe des Deque zu ändern.
  • Push_back (): Mit Hilfe dieser Funktion können Komponenten von hinten in ein Deque hinzugefügt werden.
  • Vorderseite(): Es wird verwendet, um sich auf das ursprüngliche Element des Deque -Containers zu beziehen.
  • Zurück(): Es wird verwendet, um sich auf das letzte Element des Deque -Containers zu beziehen.
  • Klar(): Es wird verwendet, um alle Elemente aus DEQUE zu entfernen, indem er seine Größe auf 0 reduziert.
  • Löschen(): Wird verwendet, um die Objekte aus einem Behälter aus einem bestimmten Punkt oder Bereich aus zu löschen.
  • Deque :: leer (): Es wird verwendet, um zu bestimmen, ob das Deque leer ist.
  • Operator =: Wird verwendet, um dem Container neue Daten zuzuweisen und die alten auszutauschen.
  • Operator[]: Wird verwendet, um sich auf das Element im Bediener am angegebenen Ort zu beziehen.
  • Bei(): Wird verwendet, um auf die Komponente zu verweisen, die an dem als Parameter der Funktion angegebenen Ort vorhanden ist.
  • Tausch(): Diese Funktion wird verwendet, um die Deques desselben Datentyps auszutauschen.
  • Start(): Es wird verwendet, um einen Iterator bereitzustellen, der auf das anfängliche Objekt des Deque -Behälters zeigt.
  • Emplace_front (): Ein neues Element wird unter Verwendung dieser Funktion in den Deque -Behälter eingefügt. Der Beginn des Deque wird geändert, um die zusätzliche Komponente einzuschließen.
  • EMPLACE_BACK (): Wird verwendet, um dem Deque -Behälter einen neuen Wert zu verleihen. Die neue Komponente ist am Ende des DEQUS enthalten.

Deque-Datenstruktur

Überprüfen Sie die Details der Deque -Datenstruktur im folgenden Abschnitt:

Verfahren auf einem Deque

Diese Schritte müssen vor der Durchführung der nachfolgenden Operationen befolgt werden:

Schritt 1: Nehmen Sie ein n-dimensionales Array (Deque). Platzieren Sie in der ersten Position zwei Zeiger und setzen Sie vorne = -1 und hinten = 0.

Richten Sie ein Deque -Array und Zeiger ein.

Einfügung vorne

Schritt 1: Diese Aktion fügt vorne eine Komponente hinzu. Überprüfen Sie den Standort der Front.

Wenn die Front weniger als 5 ist, setzen Sie die Front auf n-1 zurück (letzter Index).

Schritt 2: Reduzieren Sie die Front bei Bedarf um 1. Fügen Sie nun die neue Taste N zum Array hinzu [vorne]. Nehmen wir an n = 6.

Einfügen im Heck

Schritt 1: Diese Aktion fügt eine Komponente in der Seltenen hinzu. Stellen Sie sicher, dass das Array nicht voll ist.

Schritt 2: Wenn die Warteschlange voll ist, setzen Sie den hinteren Wert auf 0 zurück (r = 0). Ansonsten erhöhen Sie die Seltene um 1.

Schritt 3: In einem Array [hinten] fügen Sie den neuen Key 6 hinzu 6.

Von vorne nehmen

Schritt 1: Ein Element an der Vorderseite wird während des Vorgangs entfernt. Stellen Sie sicher, dass das Deque nicht leer ist.

Schritt 2: Die Löschung ist nicht möglich, wenn das Deque leer ist (vorne = -1) (Unterflusserhaltung). Stellen Sie nur die Vorderseite = -1 ein und das hinten = -1, wenn das Deque aus einem Element wie vorne = hinten besteht. Weisen Sie den Wert der Vorderseite (vorne = 0) zu, wenn sich die Vorderseite am Ende befindet (vorne = n - 1). Wenn nicht, stellen Sie die Vorderseite nach vorne = 1 1 1.

Von hinten nehmen

Schritt 1: Ein Element am Ende wird während des Prozesses entfernt. Stellen Sie sicher, dass das Deque nicht leer ist.

Schritt 2: Die Löschung ist nicht möglich, wenn das Deque leer ist (vorne = -1) (Unterflusserhaltung). Stellen Sie die Vorderseite = -1 und das hintere = -1 ein, wenn das Deque nur ein einzelnes Element hat (vorne = hinten). Andernfalls fahren Sie mit den folgenden Schritten fort. Bewegen wir uns nach vorne nach vorne, hinten = n - 1, wenn sich das Heck vorne befindet (hinten = 0). Wenn nicht, stellen Sie das seltene = selten-1 ein.

Beispiel 1: Deque erstellen

In diesem Beispiel erstellen wir ein Deque. Wir schließen zuerst unsere Header -Dateien "#include" und #include ein, wobei #include den Präprozessor befiehlt.

#enthalten
#enthalten
Verwenden von Namespace STD;
void display_deque (deque);
int main ()
deque mydeque 4, 2, 7, 5, 8;
Cout << "mydeque values are = ";
für (int var: mydeque)
Cout << var << ", ";

Rückkehr 0;

Danach beschreiben wir eine Display _deque -Funktion, mit der die von uns zugewiesenen Deque -Werte ausgeführt werden.

In unserer Hauptfunktion wechselt der INT main (), dass unsere Funktion am Ende der Ausführung einen Ganzzahlwert zurückgeben muss, was wir durch die Rückgabe von 0 nach der Schlussfolgerung des Programms mit einer einheitlichen Initialisierung „Deque Mydeque 4, 2, 2) zurückgeben müssen , 5,8 ”. In diesem „int“ ist der Datentyp der Werte, den wir zugewiesen haben, und Mydeque ist der Name, den wir für unseren Deque verwendet haben. Wir haben die Ganzzahlwerte dem Deque namens Mydeque zugeordnet, die 4, 2, 7, 5, 8 sind. Um unser Deque anzuzeigen, haben wir die für die Schleife zu einer festen Größe verwendet. Und dann haben wir den Run- oder F7 -Taste gedrückt, um die Ausgabe des Programms zu erhalten.

Beispiel 2: Hinzufügen weiterer Werte zu einem DEQU

In diesem Beispiel fügen wir einem Deque mehr Werte hinzu. Nachdem wir die erforderlichen Header -Dateien für dieses Programm hinzugefügt haben, wenden wir uns in unsere Hauptfunktion des Ganzzahl -Datentyps „Deque var 0, 1, 2“ ein. In diesem „int“ ist der Datentyp der Werte, den wir zugewiesen haben, und „var“ ist der Name, den wir für unseren Deque verwendet haben. Wir weisen die Ganzzahlwerte dem Deque namens „var“ zu, die 0, 1 und 2 sind. Dann schieben wir zwei Elemente, Element 8 an der Vorderseite des Deque und Element 5 am Ende des Deque. Das resultierende Deque, das wir haben, ist 8, 0, 1 und 5.

#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()
deque var 0, 1, 2;
Cout << "Initial Deque values are: ";
für (const int & var: var)
Cout << var << ", ";

var.push_back (5);
var.push_front (8);
Cout << "\nFinal Deque values are: ";
für (const int & var: var)
Cout << var << ", ";

Rückkehr 0;

Sobald wir mit der Codierung dieses Beispiels fertig sind, kompilieren und führen wir es in jedem Compiler zusammen und führen wir aus. Das Ergebnis zeigt die erwartete Ausgabe des vorherigen Code.

Beispiel 3: Aktualisierung der Elemente an bestimmten Indizes

In diesem Beispiel aktualisieren wir die Werte in einem Deque, nachdem wir unsere Header -Dateien "#include" und "#include" für diesen ausführbaren Code aufgenommen haben.

#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()
deque var = 1, 2;
Cout << "Initial Deque values are: ";
für (const int & var: var)
Cout << var << ", ";

var.bei (0) = 3;
var.bei (1) = 4;
Cout << "\nUpdated Deque values are: ";
für (const int & var: var)
Cout << var << ", ";

Rückkehr 0;

Jetzt gehen wir in unsere Hauptfunktion, in der wir unser Deque namens „var“ mit den Werten 1 und 2 initialisiert haben. Anschließend verwenden wir eine für Schleife, um die Werte unseres initialisierten Deque anzuzeigen. Um die Deque -Werte zu aktualisieren, verwenden wir die Funktion at () (wie wir wissen, die Funktion at () wird verwendet, um auf die angegebene Position in der Deque zu verweisen) unter Index 0 und 1, wobei „VAR“ neue Werte zugewiesen werden. Dies sind 3 und 4. Dann ist unser aktualisierter Dequeue 3 und 4. Nachdem wir unseren Code fertig gemacht haben, kompilieren wir ihn mit einem beliebigen Compiler -Tool zusammen. Hier ist die gewünschte Ausgabe unseres Codes:

Beispiel 4: Verwenden Sie Iterator, um die Werte zu entfernen

In diesem Beispiel verwenden wir die Iteratoren, um auf die Elemente im Deque zuzugreifen. Ein Objekt, das auf ein Element in einem Container verweist, wird als Iterator bezeichnet.

#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()
deque var 0, 3, 5, 8;
deque :: iterator var_iter;
var_iter = var.Start();
int first_element = *var_iter;
Cout << "var[0] = " << first_element << endl;
var_iter = var.begin () + 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;
Rückkehr 0;

Deque kann sowohl mit dem Deque :: cbegin und deque :: cend und auf in beide Richtungen mit dem Deque :: crBegin und Deque :: Crend vorwärts als auch rückwärts iteriert werden.

Zunächst haben wir einen Iterator erstellt, der auf eine Deque von Ganzzahlen namens "Var" verweisen kann. Anschließend zeigten wir auf die folgenden Elemente mit dem Iterator "var_inter". Der Iterator, den die Methode begin () zurückgibt, zeigt auf das erste Element. Das „begin () + 1 erzeugt einen Iterator mit dem Index 1 des Elements als Ausgangspunkt. Wie Sie sehen können, verwenden wir den Var.end () - 1 anstelle der var.Ende().

Dies liegt daran. Um das letzte Element zu erhalten, ziehen wir 1 ab. Wir verwenden den Indirektionoperator *, um den Wert eines Elements zu erhalten, nachdem das Inter_Var verwendet wird, um darauf zu zeigen.

Operationen von Deque

Die grundlegenden Operationen, die auf Deque durchgeführt werden können, sind wie folgt:

  • Insertfront wird normalerweise verwendet, um etwas an der Vorderseite des Deque hinzuzufügen oder einzulegen.
  • Fügen Sie am Ende des DEQUs etwas ein oder fügen Sie etwas hinzu, indem Sie die verwenden InsertLast Befehl.
  • Löschen wird verwendet, um das Element von der Warteschlange vorne zu entfernen, indem es löschen.
  • Finale entfernen Darin sollte der Artikel gelöscht oder bis zum Ende der Warteschlange verschoben werden.
  • Holen Sie sich den ersten Artikel in der Deque mit dem GetFront Methode.
  • Holen Sie sich den letzten Element in der Warteschlange mit dem GetLast Methode.
  • ist leer wird verwendet, um zu überprüfen, ob das Deque null ist.
  • ist voll wird verwendet, um zu bestimmen, ob das DEQUE voll ist.

Abschluss

Deque ist die größte Option, da es schneller ist und dem Code schneller ausführt. Das Deque funktioniert besser für Protokollsequenzen. Dieser Artikel basiert auf Deque -Implementierung und seinen Hauptmethoden, die uns helfen, die DEQUE gemäß unseren Bedürfnissen zu ändern. Wir wollen den Deque und seine Methoden sowie Beispiele für die Verwendung des Deque und die Benutzung erläutern. Das Tool, mit dem wir Code implementiert haben, ist der C ++ - Compiler. Wir haben uns aufrichtig bemüht, dieses Tutorial so einfach und verständlich wie möglich zu gestalten.