English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Nel campo della scienza informatica, ci impegniamo in vari programmi. Ognuno di loro ha la propria sfera e utilità. Secondo l'obiettivo di creazione del programma e l'ambiente, disponiamo di un gran numero di strutture dati da scegliere. Una di queste è “pila”. Prima di discutere questo tipo di dati, diamo un'occhiata alla sua sintassi.
template<class T, class Container = deque<T> > class stack;
Questa struttura dati utilizza la tecnica LIFO, dove LIFO significa last in, first out. L'elemento inserito per primo verrà estratto dall'ultima posizione, e così via. Esiste un elemento chiamato “top”, che è l'elemento situato nella posizione più alta. Tutte le operazioni di inserimento e rimozione vengono eseguite sull'elemento in alto della pila.
La pila suggerita nell'area di applicazione è l'adattatore di contenitore.
Il contenitore deve supportare la seguente elenco di operazioni:
empty
size
indietro
push_back
pop_back
TIl parametro specifica il tipo di elementi che il contenitore adattatore conserverà.
ContainerIl parametro specifica l'oggetto interno del contenitore utilizzato per contenere gli elementi dello stack.
Di seguito è riportata la lista dei tipi membri dello stack con una breve descrizione.
Tipi membri | Descrizione |
---|---|
value_type | Specifica il tipo degli elementi. |
container_type | Specifica il tipo di contenitore di base. |
size_type | Specifica l'intervallo di dimensione degli elementi. |
Grazie alle funzioni, è possibile utilizzare oggetti o variabili nel campo del programming. Lo stack fornisce un gran numero di funzioni che possono essere utilizzate o incorporate nel programma. Ecco la lista:
Funzione | Descrizione |
---|---|
(costruttore) | Questa funzione costruisce il contenitore del contenitore dello stack. |
empty | Questa funzione verifica se lo stack è vuoto. Se lo stack è vuoto, questa funzione restituisce true, altrimenti restituisce false. |
size | Questa funzione restituisce la dimensione del contenitore dello stack, che è una misura del numero di elementi memorizzati nello stack. |
top | Questa funzione accede all'elemento in cima allo stack. Questo elemento gioca un ruolo molto importante, poiché tutte le operazioni di inserimento e rimozione vengono eseguite sull'elemento in cima. |
push | Questa funzione inserisce un nuovo elemento in cima allo stack. |
pop | Questa funzione elimina l'elemento, rimuovendo l'elemento in cima allo stack. |
emplace | Questa funzione inserisce un nuovo elemento sopra l'elemento in cima allo stack. |
swap | Questa funzione scambia il contenuto di due contenitori tramite riferimenti. |
operatori di relazione | La funzione non membro specifica gli operatori di relazione necessari per lo stack. |
uses allocator<stack> | Come suggerisce il nome, la funzione non membro utilizza l'allocatore per lo stack. |
#include <iostream> #include <stack> using namespace std; void newstack(stack <int> ss) { stack <int> sg = ss; while (!sg.empty()) { cout << '\t' << sg.top(); sg.pop(); } cout << '\n'; } int main () { stack <int> newst; newst.push(55); newst.push(44); newst.push(33); newst.push(22); newst.push(11); cout << "L'ultimo stack è : "; newstack(newst); cout << "\n newst.size() : " << newst.size(); cout << "\n newst.top() : " << newst.top(); cout << "\n newst.pop() : "; newst.pop(); newstack(newst); return 0; }
Output:
L'ultimo stack è : 11 22 33 44 55 newst.size() : 5 newst.top() : 11 newst.pop() : 22 33 44 55