std::stack
| Ta strona została ukończona i wymaga przejrzenia. Jeśli przejrzysz tę stronę i nie znajdziesz błędów, zwiększ argument tego szablonu o 1.
Znalezione błędy możesz poprawić samemu lub zgłosić na tej stronie. Obecnie przejrzało: 0 osób ✰✰✰ |
| 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).
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ą:
Standardowe kontenery std::vector, std::deque i std::list spełniają te wymogi. |
Typy składowe
| Typ składowy | Definicja |
| container_type | Container |
| value_type | Container::value_type |
| size_type | Container::size_type |
| reference | Container::reference |
| const_reference | Container::const_reference |
Metody
| Konstruuje stack (publiczna metoda) | |
| Niszczy stack (publiczna metoda) | |
| przypisuje wartości do adaptora kontenera (publiczna metoda) | |
Dostęp do elementów | |
| dostęp do szczytowego elementu (publiczna metoda) | |
Pojemność | |
| sprawdza, czy opakowany kontener jest pusty (publiczna metoda) | |
| zwraca liczbę elementów (publiczna metoda) | |
Modyfikatory | |
| wstawia element na szczyt (publiczna metoda) | |
(C++11) |
konstruuje element "w miejscu" na szczycie (publiczna metoda) |
| usuwa szczytowy element (publiczna metoda) | |
| zamienia zawartość (publiczna metoda) | |
Pola składowe | |
Container c |
opakowywany kontener (chroniony obiekt składowy) |
Funkcje operujące na zawartości
| leksykograficznie porównuje wartości w stack (szablon funkcji) | |
| specjalizacja dla algorytmu std::swap (szablon funkcji) |
Klasy pomocnicze
| specializes the std::uses_allocator type trait (szablon funkcji) |
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).