Przestrzenie nazw
Warianty
Działania

std::stack

Z cppreference.com
< cpp‎ | container
Zdefiniowane w nagłówku <stack>
template<

    class T,
    class Container = std::deque<T>

> class stack;

std::stack (stos) jest adapterem kontenera, zapewniająca programiście funkcjonalność stosu - struktury danych FILO (first-in, last-out; pierwszy na wejściu, ostatni na wyjściu).

Szablon tej klasy funkcjonuje jak opakowanie do kontenera - umożliwia tylko pewien konkretny zbiór operacji. Stos operuje tylko na końcu opakowywanego kontenera, nazywanym wierzchołkiem stosu (top()). Możliwymi działaniami jest dodanie elementu na koniec (wrzucenie na stos) i usunięcie elementu z końca (zdjęcie ze stosu).

Spis treści

[edytuj] Parametry szablonu

T - Typ przechowywanych elementów.
Container - Typ opakowywanego kontenera, wykorzystywanego do przechowywania elementów. Kontener ten musi spełniać wymogi SequenceContainer. Dodatkowo, musi zapewniać następujące metody, ze standardową semantyką:
  • back()
  • push_back()
  • pop_back()

Standardowe kontenery std::vector, std::deque i std::list spełniają te wymogi.

[edytuj] Typy składowe

Typ składowy Definicja
container_type Container [edit]
value_type Container::value_type [edit]
size_type Container::size_type [edit]
reference Container::reference [edit]
const_reference Container::const_reference [edit]

[edytuj] Metody

Konstruuje stack
(publiczna metoda) [edit]
Niszczy stack
(publiczna metoda) [edit]
przypisuje wartości do adaptora kontenera
(publiczna metoda) [edit]
Dostęp do elementów
dostęp do szczytowego elementu
(publiczna metoda) [edit]
Pojemność
sprawdza, czy opakowany kontener jest pusty
(publiczna metoda) [edit]
zwraca liczbę elementów
(publiczna metoda) [edit]
Modyfikatory
wstawia element na szczyt
(publiczna metoda) [edit]
(C++11)
konstruuje element "w miejscu" na szczycie
(publiczna metoda) [edit]
usuwa szczytowy element
(publiczna metoda) [edit]
zamienia zawartość
(publiczna metoda) [edit]

Pola składowe

Container c
opakowywany kontener
(chroniony obiekt składowy) [edit]

[edytuj] Funkcje operujące na zawartości

leksykograficznie porównuje wartości w stack
(szablon funkcji) [edit]
specjalizacja dla algorytmu std::swap
(szablon funkcji) [edit]

[edytuj] Klasy pomocnicze

specializes the std::uses_allocator type trait
(szablon funkcji) [edit]

[edytuj] Notka

Warto rozpatrzeć możliwość wykorzystania innego kontenera, niż domyślne deque. Przy wielu zastosowaniach korzystając zamiast tego z wektora vector uzyska się lepszą średnią wydajność (kosztem potencjalnie większego zużycia pamięci i liniowej złożoności operacji push() w przypadku pesymistycznym).