Menu
Coddy logo textTech

Stack

Lezione 10 di 23 del corso C++ - Libreria standard dei template di Coddy.

In questo capitolo imparerai a conoscere gli adattatori di contenitori. Quelli che imparerai sono lo stack, la queue e la priority-queue.


Lo Stack di C++ è una struttura dati basata sul principio LIFO (Last in-First out) . Ciò significa che gli elementi aggiunti per ultimi alla struttura dati stack saranno rimossi per primi e che si potrà accedere per ultimo al primo elemento aggiunto allo stack (è molto simile a impilare piatti o pancake. Quando impili i piatti, non puoi prendere quello sul fondo, aggiunto per primo: devi prendere l'ultimo piatto, quello in cima).


stack<dataType> stackName;

Per creare uno stack in C++, dobbiamo prima includere il file header stack all'inizio del file C++ con #include <stack>. 
Poi possiamo dichiarare una variabile stack come mostrato qui sotto.

stack<int> number_stack = {1, 2, 3};

Quindi, come aggiungiamo elementi allo stack? Usiamo il metodo push().

stack<int> number_stack;
number_stack.push(1);
number_stack.push(2);
...

In questo modo possiamo aggiungere nuovi elementi allo stack.


Dobbiamo anche visualizzare gli elementi sullo schermo. Lo facciamo usando il metodo top(), che restituisce l'ultimo valore in cima allo stack.

cout << number_stack.top();
Output:
2

Ma se continuiamo a visualizzare top() sullo schermo, continueremo a ottenere gli ultimi elementi, in questo caso 2. Quindi ci serve un metodo per rimuovere un elemento dalla cima. A questo scopo usiamo il metodo pop(), che rimuove l'ultimo elemento in cima allo stack.

cout << number_stack.top() << endl;
number_stack.pop();
cout << number_stack.top();
Output: 
2
1

In conclusione, la struttura dati stack è molto utile in C++, nella programmazione e nella programmazione competitiva in generale. La sua caratteristica fondamentale è che usa il principio Last in-First out.


Metodi dello stack

MetodoFunzionalità
size()Restituisce il numero di elementi nello stack
empty()Restituisce true se lo stack è vuoto, false altrimenti
swap()Scambia il contenuto di uno stack con quello di un altro
challenge icon

Sfida

Facile

Ti viene dato un numero N dall'input. Nelle successive N righe c'è un numero. 
Usando uno stack, stampa ogni numero inserito, ma partendo dall'ultimo numero e procedendo all'indietro.

 

Input
5
1
2
3
4
5
Output
5
4
3
2
1

Provalo tu

#include <stack>
#include <iostream>

using namespace std;

int main()
{
    // Enter your code here

    return 0;
}

Tutte le lezioni di C++ - Libreria standard dei template

Esercitati da solo: Compilatore C++ online