std:: stack
|
Definiert im Header
<stack>
|
||
|
template
<
class
T,
|
||
Die
std::stack
-Klasse ist ein
Container-Adapter
, der dem Programmierer die Funktionalität eines
Stapelspeichers
bietet - genauer gesagt, einer LIFO (Last-In, First-Out) Datenstruktur.
Die Klassenvorlage dient als Wrapper für den zugrunde liegenden Container - es wird nur ein spezifischer Satz von Funktionen bereitgestellt. Der Stack schiebt Elemente von der Rückseite des zugrunde liegenden Containers hinein und holt sie von dort heraus, was als die Oberseite des Stacks bekannt ist.
Alle Memberfunktionen von
std::stack
sind
constexpr
: Es ist möglich,
std::stack
-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::vector (einschließlich std::vector<bool> ), std::deque und std::list erfüllen diese Anforderungen. Standardmäßig wird, wenn für eine bestimmte Stack-Klasseninstanziierung kein Container angegeben ist, der Standardcontainer std::deque verwendet. |
Mitgliedertypen
| Typ | Definition |
container_type
|
Container
|
value_type
|
Container::value_type
|
size_type
|
Container :: size_type |
reference
|
Container::reference
|
const_reference
|
Container::const_reference
|
Member-Objekte
| Mitglied | Beschreibung |
|
Container
c
|
das zugrundeliegende Container-Objekt
(geschütztes Mitgliedsobjekt) |
Memberfunktionen
Konstruiert den
stack
(öffentliche Elementfunktion) |
|
Zerstört den
stack
(öffentliche Elementfunktion) |
|
|
weist Werte dem Container-Adapter zu
(öffentliche Elementfunktion) |
|
Elementzugriff |
|
|
greift auf das oberste 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 oben ein
(öffentliche Elementfunktion) |
|
|
(C++23)
|
fügt einen Bereich von Elementen oben ein
(öffentliche Elementfunktion) |
|
(C++11)
|
konstruiert Element direkt an der Spitze
(öffentliche Elementfunktion) |
|
entfernt das oberste Element
(öffentliche Elementfunktion) |
|
|
(C++11)
|
tauscht die Inhalte aus
(öffentliche Elementfunktion) |
Nicht-Member-Funktionen
vergleicht die Werte von zwei
stack
s lexikographisch
(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::stack
(Klassen-Template-Spezialisierung) |
Deduktionsleitfäden |
(seit C++17) |
Hinweise
| Feature-Test Makro | Wert | Std | Feature |
|---|---|---|---|
__cpp_lib_containers_ranges
|
202202L
|
(C++23) | Ranges-Konstruktion und -Einfügung für Container |
__cpp_lib_constexpr_stack
|
202502L
|
(C++26) |
constexpr
std::stack
|
Beispiel
|
Dieser Abschnitt ist unvollständig
Grund: Kein Beispiel |
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 |
Container
konnte nicht
std::vector<bool>
sein
|
erlaubt |
| LWG 2566 | C++98 |
Fehlende Anforderung für
Container::value_type
|
fehlerhaft, wenn
T
nicht dem selben Typ wie
Container::value_type
entspricht
|
Siehe auch
|
veränderbares zusammenhängendes Array
(Klassen-Template) |
|
|
platzsparende dynamische Bitmenge
(Klassen-Template-Spezialisierung) |
|
|
doppelseitige Warteschlange
(Klassen-Template) |
|
|
doppelt verkettete Liste
(Klassen-Template) |