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:
| Funktionsname | Funktionsbeschreibung |
|---|---|
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 <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 <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