Kontener typu stack - stos

Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 3521 razy

Wstęp

Klasa stack jest implementacją stosu, czyli takiego kontenera, który umożliwia dynamiczne dodawanie elementów w taki sposób, że aby uzyskać dostęp do kolejnych elementów stosu konieczne jest zdjęcie ostatnio dodanego elementu. Stos jest kontenerem z dostępem typu LIFO, czyli ostatni wchodzi pierwszy wychodzi. Przykładową implementację stosu stworzyłem na stronie Programowanie → Podstawy C++ → Szablony klas na przykładzie własnej kolejki LIFO (stosu) przy okazji omawiania zagadnień związanych z szablonami klas.

Dostęp do klasy stack uzyskuje się poprzez załączenie pliku nagłówkowego stack.

Konstruktory klasy stack

Dwa podstawowe konstruktory to oczywiście konstruktor bezparametrowy i kopiujący:

std::stack<int> stack1; // bezparametrowy konstruktor std::stack<int> stack2(stack1); // kopiujący konstruktor

Istnieje też wersja konstruktora bezparametrowego używającego kontenera innego typu, oto przykład:

std::stack<int, std::vector<int>> stack;

Ostatni wariant umożliwia skopiowanie wartości z innego kontenera przechowującego ten sam typ danych:

std::vector<int> v(3, 10); // tworzę wektor z trzema elementami zawierającymi liczbę dziesięć std::stack<int, std::vector<int>> stack(v); // ten konstruktor kopiuje elementy z wektora v

Metody klasy stack

Oto metody klasy stack:

Jak widać, aby uzyskać dostęp do kolejnych elementów stosu konieczne jest zdjęcie ostatnio dodanego elementu.

Strony powiązane
strony powiązane
  1. www.cplusplus.com/reference/stack/stack/ - opis klasy stack [en]
Propozycje książek