Stack
Tento príklad ukazuje použitie std::stack v C++17 na pridávanie, prístup, odoberanie prvkov a prácu so zásobníkom.
#include <iostream>
#include <stack>
#include <string>
using namespace std;
int main() {
// Deklarácia zásobníka pre reťazce
stack<string> myStack;
// Pridávanie prvkov na vrchol zásobníka
myStack.push("C++");
myStack.push("je");
myStack.push("výborný");
myStack.push("jazyk");
// Výpis vrchného prvku (top)
cout << "Vrchný prvok: " << myStack.top() << endl;
// Odstránenie vrchného prvku
myStack.pop();
cout << "Po pop(): Vrchný prvok je teraz: " << myStack.top() << endl;
// Pridanie nového prvku pomocou emplace()
myStack.emplace("moderný");
cout << "Po emplace(): Vrchný prvok je teraz: " << myStack.top() << endl;
// Výpis všetkých prvkov a ich odstránenie
cout << "Obsah zásobníka: ";
while (!myStack.empty()) {
cout << myStack.top() << " ";
myStack.pop();
}
cout << endl;
return 0;
}Vysvetlenie kódu:
Deklarácia
std::stack<string>stack<string> myStack;std::stackje LIFO (Last-In, First-Out) dátová štruktúra.- Používame ju na uchovanie reťazcov (
std::string).
Pridanie prvkov na vrchol (
push())myStack.push("C++"); myStack.push("je"); myStack.push("výborný"); myStack.push("jazyk");- Prvky sa pridávajú na vrchol zásobníka.
Získanie vrchného prvku (
top())cout << "Vrchný prvok: " << myStack.top() << endl;top()vráti referenciu na posledne pridaný prvok bez jeho odstránenia.
Odstránenie vrchného prvku (
pop())myStack.pop(); cout << "Po pop(): Vrchný prvok je teraz: " << myStack.top() << endl;pop()odstráni najnovší prvok.
Efektívne pridanie nového prvku (
emplace())myStack.emplace("moderný");emplace()je efektívnejšia verziapush(), pretože konštruuje prvok priamo v zásobníku.
Výpis a vyprázdnenie zásobníka
while (!myStack.empty()) { cout << myStack.top() << " "; myStack.pop(); }- Cez
empty()kontrolujeme, či je zásobník prázdny. - Každý prvok vypíšeme a hneď ho odstránime (
pop()).
- Cez
Očakávaný výstup:
Vrchný prvok: jazyk
Po pop(): Vrchný prvok je teraz: výborný
Po emplace(): Vrchný prvok je teraz: moderný
Obsah zásobníka: moderný výborný je C++