English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

教程基础C++

Controllo di flusso C++

Funzione C++

Array e stringhe C++

Strutture dati C++

Classi e oggetti C++

Puntatore C++

Ereditarietà C++

Tutorial STL C++

Manuale di riferimento C++

Stack (pila) C++

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.

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

Parametro di template

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.

Tipi membri

Di seguito è riportata la lista dei tipi membri dello stack con una breve descrizione.

Tipi membriDescrizione
value_typeSpecifica il tipo degli elementi.
container_typeSpecifica il tipo di contenitore di base.
size_typeSpecifica l'intervallo di dimensione degli elementi.

Funzione

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:

FunzioneDescrizione
(costruttore)Questa funzione costruisce il contenitore del contenitore dello stack.
emptyQuesta funzione verifica se lo stack è vuoto. Se lo stack è vuoto, questa funzione restituisce true, altrimenti restituisce false.
sizeQuesta funzione restituisce la dimensione del contenitore dello stack, che è una misura del numero di elementi memorizzati nello stack.
topQuesta 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.
pushQuesta funzione inserisce un nuovo elemento in cima allo stack.
popQuesta funzione elimina l'elemento, rimuovendo l'elemento in cima allo stack.
emplaceQuesta funzione inserisce un nuovo elemento sopra l'elemento in cima allo stack.
swapQuesta funzione scambia il contenuto di due contenitori tramite riferimenti.
operatori di relazioneLa 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.

Esempio: un programma semplice che illustra l'uso delle funzioni di base dello 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