std::stack
| Definiert in Header <stack> |
||
| template< class T, |
||
Die Klasse std::stack ist ein Container-Adapter, der dem Programmierer die Funktionalität eines Stacks zur Verfügung stellt – genauer gesagt einer LIFO (Last-In, First-Out)-Datenstruktur.
Die Klassenvorlage fungiert als Wrapper für den zugrunde liegenden Container – nur eine spezifische Menge von Funktionen wird bereitgestellt. Der Stack fügt Elemente am Ende des zugrunde liegenden Containers ein und entfernt sie von dort, was als Oberseite des Stacks bezeichnet wird.
|
Alle Member-Funktionen von |
(seit C++26) |
Inhalt |
[edit] Template-Parameter
| T | - | Der Typ der gespeicherten Elemente. Das Programm ist fehlerhaft, wenn T nicht vom gleichen Typ wie Container::value_type ist. |
| Container | - | Der Typ des zugrunde liegenden Containers, der zur Speicherung der Elemente verwendet wird. Der Container muss die Anforderungen an einen 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, wenn für eine bestimmte Stack-Klasseninstanziierung kein Container angegeben wird, wird der Standardcontainer std::deque verwendet. |
[edit] Member-Typen
| Typ | Definition |
container_type
|
Container |
value_type
|
Container::value_type |
size_type
|
Container::size_type |
Referenz
|
Container::reference |
const_reference
|
Container::const_reference |
[edit] Member-Objekte
| Mitglied | Beschreibung |
| Container c |
der zugrunde liegende Container (protected member object) |
[edit] Member-Funktionen
konstruiert den stack(public member function) | |
destruiert den stack(public member function) | |
| weist Werte dem Container-Adapter zu (public member function) | |
Elementzugriff | |
| greift auf das oberste Element zu (public member function) | |
Kapazität | |
| prüft, ob der Container-Adapter leer ist (public member function) | |
| Gibt die Anzahl der Elemente zurück (public member function) | |
Modifizierer | |
| fügt ein Element oben ein (public member function) | |
| (C++23) |
fügt einen Elementbereich oben ein (public member function) |
| (C++11) |
konstruiert ein Element inplace an der Oberseite (public member function) |
| entfernt das oberste Element (public member function) | |
| (C++11) |
tauscht die Inhalte (public member function) |
[edit] Nicht-Member-Funktionen
vergleicht lexikographisch die Werte zweier stacks(function template) | |
| (C++11) |
spezialisiert den Algorithmus std::swap (function template) |
[edit] Hilfsklassen
| spezialisiert das std::uses_allocator Typ-Trait (Klassenvorlagenspezialisierung) | |
| (C++23) |
Formatierungsunterstützung für std::stack(Klassenvorlagenspezialisierung) |
Deduction Guides |
(seit C++17) |
[edit] Anmerkungen
| Feature-Test-Makro | Wert | Std | Feature |
|---|---|---|---|
__cpp_lib_containers_ranges |
202202L |
(C++23) | Bereichskonstruktion und -einfügung für Container |
__cpp_lib_constexpr_containers |
202502L |
(C++26) | constexpr std::stack |
[edit] Beispiel
| Dieser Abschnitt ist unvollständig Grund: kein Beispiel |
[edit] Fehlerberichte
Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | angewendet auf | Verhalten wie veröffentlicht | Korrigiertes 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 vom gleichen Typ wie Container::value_type ist |
[edit] Siehe auch
| reservierbares, zusammenhängendes Array (Klassenvorlage) | |
| speichereffizientes dynamisches Bitset (class template specialization) | |
| Doppelt-endende Warteschlange (Klassenvorlage) | |
| Doppelt verkettete Liste (Klassenvorlage) |