C++-Standardbibliothek<deque>

In C++,<deque>ist Teil der Standard Template Library (STL) und bietet eine Implementierung einer doppelseitigen Warteschlange.

Eine Deque ist eine lineare Datenstruktur, die Einfüge- und Löschoperationen an beiden Enden ermöglicht.

<deque>Ihr vollständiger Name ist "doppelendige Warteschlange", und in C++ existiert sie in Form einer Template-Klasse, die das Speichern beliebiger Datentypen ermöglicht.

<deque>Es ist ein dynamisches Array, das schnellen wahlfreien Zugriff bietet und gleichzeitig effiziente Einfüge- und Löschoperationen an beiden Enden ermöglicht. Dies macht<deque>es zu einer idealen Wahl für Szenarien, die häufiges Einfügen und Löschen von Elementen erfordern.

Syntax

In C++ verwendet man<deque>Die Header-Datei muss eingebunden werden#include <deque>. Das Folgende ist<deque>Grundlegende Syntax:

#include <iostream>
#include <deque>

int main() {
    std::deque<int> myDeque; // 创建一个整数类型的双端队列
    // 接下来可以进行插入、删除等操作
    return 0;
}

Häufige Operationen

Nachfolgend sind einige gängige Memberfunktionen des std::deque-Containers aufgeführt:

FunktionsnameFunktionsbeschreibung
deque()der Standardkonstruktor zum Erstellen eines leerendequeContainers.
deque(size_type n)Erstellen Sie einen Container mitnElementen mit StandardwertendequeContainers.
deque(size_type n, const T& value)Erstellen Sie einen Container mitnein Wert istvaluevondequeContainers.
deque(initializer_list<T> il)Verwenden einer InitialisierungslisteilKonstruktordequeContainers.
operator=Zuweisungsoperator zum Zuweisen andequeContainers.
assign()Durch einen neuen Wert ersetzendequealle Elemente im Container.
at(size_type pos)returnposElement an der Position, mit Bereichsprüfung.
operator[](size_type pos)returnposElement an der Position, ohne Bereichsprüfung.
front()Gibt eine Referenz auf das erste Element zurück.
back()Gibt eine Referenz auf das letzte Element zurück.
begin()Gibt einen Iterator auf das erste Element zurück.
end()Gibt einen Iterator zurück, der auf die Position nach dem letzten Element zeigt.
rbegin()Gibt einen Reverse-Iterator zurück, der auf das letzte Element zeigt.
rend()Gibt einen Reverse-Iterator zurück, der auf die Position vor dem ersten Element zeigt.
empty()Prüft, ob der Container leer ist.
size()Gibt die Anzahl der Elemente im Container zurück.
max_size()Gibt die maximale Anzahl von Elementen zurück, die der Container aufnehmen kann.
clear()Entfernt alle Elemente aus dem Container.
insert(iterator pos, const T& value)InposAn Position einfügenvalueElement.
erase(iterator pos)RemoveposElement an Position.
push_back(const T& value)Am Ende des Containers hinzufügenvalueElement.
pop_back()Entfernt das Element am Ende des Containers.
push_front(const T& value)Am Anfang des Containers hinzufügenvalueElement.
pop_front()Entfernt das Element am Anfang des Containers.
resize(size_type count)Ändert die Größe des Containers aufcountZusätzliche Teile werden mit Standardwerten gefüllt.
swap(deque& other)Vertauscht zweidequeInhalte des Containers.
get_allocator()Gibt eine Kopie des Allocator-Objekts zurück, das zum Konstruieren der deque verwendet wurde.

Beispiel

Nachfolgend ein Beispiel unter Verwendung von<deque>Ein einfaches Beispiel, einschließlich Einfüge-, Zugriffs- und Löschoperationen von Elementen.

Beispiel

#include <iostream>
#include <deque>

int main() {
    std::deque<int> myDeque;

    // Elemente einfügen
    myDeque.push_back(10);
    myDeque.push_back(20);
    myDeque.push_front(5);

    // Zugriff auf Elemente
    std::cout << "Deque enthält: ";
    for (int i = 0; i < myDeque.size(); ++i) {
        std::cout << myDeque[i] << " ";
    }
    std::cout << std::endl;

    // Elemente löschen
    myDeque.pop_back();
    myDeque.pop_front();

    // Erneut auf Elemente zugreifen
    std::cout << "Deque nach dem Entfernen: ";
    for (int i = 0; i < myDeque.size(); ++i) {
        std::cout << myDeque[i] << " ";
    }
    std::cout << std::endl;

    return 0;
}

Ausgabe:

Deque contains: 5 10 20 
Deque after popping: 10 

Wenn die Länge der Deque unbekannt ist, können deque.front() und deque.back() verwendet werden, um auf die vorderen und hinteren Elemente zuzugreifen:

Beispiel

#include <iostream>
#include <deque>

int main() {
    std::deque<int> d;

    // Elemente zur Deque hinzufügen
    d.push_back(10);
    d.push_back(20);
    d.push_front(5);

    // Zugriff auf das vordere Element
    std::cout << "Vorderes Element: " << d.front() << std::endl;

    // Zugriff auf das hintere Element
    std::cout << "Hinteres Element: " << d.back() << std::endl;

    // Das vordere Element ändern
    d.front() = 15;

    // Das hintere Element ändern
    d.back() = 25;

    // Erneut auf Elemente zugreifen
    std::cout << "Geändertes vorderes Element: " << d.front() << std::endl;
    std::cout << "Geändertes hinteres Element: " << d.back() << std::endl;

    return 0;
}

Die Ausgabe ist:

Front element: 5
Back element: 20
Modified front element: 15
Modified back element: 25

Hinweis:Bevor Sie front() oder back() verwenden, stellen Sie sicher, dass die deque nicht leer ist; andernfalls führt dies zu undefiniertem Verhalten. Wenn Sie prüfen müssen, ob die deque leer ist, können Sie die Memberfunktion empty() verwenden.

Weitere Erweiterungen