std:: queue
|
Definiert im Header
<queue>
|
||
|
template
<
class
T,
|
||
Die
std::queue
-Klassenvorlage ist ein
Container-Adapter
, der die Funktionalität einer
Warteschlange
bereitstellt - genauer gesagt, einer FIFO-Datenstruktur (First-In, First-Out).
Die Klassenvorlage fungiert als Wrapper für den zugrundeliegenden Container - es wird nur ein spezifischer Satz von Funktionen bereitgestellt. Die Queue schiebt die Elemente auf das Ende des zugrundeliegenden Containers und entfernt sie von der Vorderseite.
Alle Memberfunktionen von
std::queue
sind
constexpr
: Es ist möglich,
std::queue
-Objekte in der Auswertung eines konstanten Ausdrucks zu erstellen und zu verwenden.
Allerdings können
|
(seit C++26) |
Inhaltsverzeichnis |
Template-Parameter
| T | - |
Der Typ der gespeicherten Elemente. Das Programm ist fehlerhaft, wenn
T
nicht derselbe Typ wie
Container::value_type
ist.
|
| Container | - |
Der Typ des zugrundeliegenden Containers, der zur Speicherung der Elemente verwendet wird. Der Container muss die Anforderungen von
SequenceContainer
erfüllen. Zusätzlich muss er die folgenden Funktionen mit den
üblichen Semantiken
bereitstellen:
Die Standardcontainer std::deque und std::list erfüllen diese Anforderungen. |
Mitgliedertypen
| Mitgliedtyp | Definition |
container_type
|
Container
|
value_type
|
Container::value_type
|
size_type
|
Container :: size_type |
reference
|
Container::reference
|
const_reference
|
Container::const_reference
|
Member-Objekte
| Mitgliedername | Definition |
|
Container
c
|
der zugrundeliegende Container
(geschütztes Mitgliedsobjekt) |
Memberfunktionen
Konstruiert die
queue
(öffentliche Elementfunktion) |
|
Zerstört die
queue
(öffentliche Elementfunktion) |
|
|
Weist Werte dem Container-Adapter zu
(öffentliche Elementfunktion) |
|
Elementzugriff |
|
|
Greift auf das erste Element zu
(öffentliche Elementfunktion) |
|
|
Greift auf das letzte Element zu
(öffentliche Elementfunktion) |
|
Kapazität |
|
|
Prüft, ob der Container-Adapter leer ist
(öffentliche Elementfunktion) |
|
|
Gibt die Anzahl der Elemente zurück
(öffentliche Elementfunktion) |
|
Modifikatoren |
|
|
Fügt Element am Ende ein
(öffentliche Elementfunktion) |
|
|
(C++23)
|
Fügt einen Bereich von Elementen am Ende ein
(öffentliche Elementfunktion) |
|
(C++11)
|
Konstruiert Element direkt am Ende
(öffentliche Elementfunktion) |
|
Entfernt das erste Element
(öffentliche Elementfunktion) |
|
|
(C++11)
|
Tauscht die Inhalte aus
(öffentliche Elementfunktion) |
Nicht-Member-Funktionen
vergleicht lexikographisch die Werte zweier
queue
s
(Funktions-Template) |
|
|
(C++11)
|
spezialisiert den
std::swap
-Algorithmus
(Funktions-Template) |
Hilfsklassen
|
(C++11)
|
spezialisiert das
std::uses_allocator
Typ-Trait
(Klassen-Template-Spezialisierung) |
|
(C++23)
|
Formatierungsunterstützung für
std::queue
(Klassen-Template-Spezialisierung) |
Deduktionsleitfäden |
(seit C++17) |
Hinweise
| Feature-Test Makro | Wert | Std | Funktion |
|---|---|---|---|
__cpp_lib_containers_ranges
|
202202L
|
(C++23) | Ranges-Konstruktion und -Einfügung für Container |
__cpp_lib_constexpr_queue
|
202502L
|
(C++26) |
constexpr
std::queue
|
Beispiel
#include <cassert> #include <iostream> #include <queue> int main() { std::queue<int> q; q.push(0); // back pushes 0 q.push(1); // q = 0 1 q.push(2); // q = 0 1 2 q.push(3); // q = 0 1 2 3 assert(q.front() == 0); assert(q.back() == 3); assert(q.size() == 4); q.pop(); // removes the front element, 0 assert(q.size() == 3); // Print and remove all elements. Note that std::queue does not // support begin()/end(), so a range-for-loop cannot be used. std::cout << "q: "; for (; !q.empty(); q.pop()) std::cout << q.front() << ' '; std::cout << '\n'; assert(q.size() == 0); }
Ausgabe:
q: 1 2 3
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrektes Verhalten |
|---|---|---|---|
| LWG 307 | C++98 |
std::queue
unterstützte keine Container, die Proxy-Referenztypen
verwenden [1] anstelle von (
const
)
value_type&
|
unterstützt |
| LWG 2566 | C++98 |
Fehlende Anforderung für
Container::value_type
|
fehlerhaft, wenn
T
nicht der gleiche Typ wie
Container::value_type
ist
|
-
↑
Wie etwa Container ähnlich
std::vector<bool>
mit zusätzlicher Unterstützung von
pop_front(). Die Lösung dieses DR
fügte Unterstützung für std::vector<bool> in std::stack und std::priority_queue hinzu. Die Änderungen bezüglichstd::queue
dienen der Wahrung der Konsistenz.
Siehe auch
|
passt einen Container für eine Prioritätswarteschlange an
(Klassen-Template) |
|
|
doppelseitige Warteschlange
(Klassen-Template) |
|
|
doppelt verkettete Liste
(Klassen-Template) |