vuoi
o PayPal
tutte le volte che vuoi
list (default) o deque, in grado di contenere elementi di qualsiasi tipo.
#include <cstdlib>
#include <iostream>
#include <list>
#include <deque>
using namespace std;
/* Classe generica Queue, che implementa uno coda basata
�
su Container. Il container di default list */
template < typename T, typename Container = list <T> >
class Queue
{
public:
// Concatena un nuovo elemento in coda al container
void Push(const T &elemento) { c.push_back(elemento); };
// Estrae un elemento dalla testa del container
T Pop(); �
// Ritorna true se il container vuoto
bool Empty() const { return c.empty(); };
private:
// Container di elementi di tipo T inizialmente vuoto
Container c;
};
// Implementazione di Pop
template <typename T, typename Container>
T Queue<T, Container>::Pop()
{
if( c.empty() ) {
cerr << "ERRORE! Coda vuota. Fine del programma." << endl;
system("pause");
exit(1);
}
else {
T top;
top = c.front(); // legge l'elemento in testa alla coda
c.pop_front(); // rimuove l'elemento letto
return top;
}
}
int main()
{ // Test della classe generica Queue
�
/* La variabile queueList dichiarata come una coda di interi basata
sul container di default list */
Queue <int> queueList; �
/* La variabile queueDeque dichiarata come uno stack di interi basato
sul container deque */
Queue < int, deque <int> > queueDeque;
int temp;
// Inserisce in queueList 10 numeri compresi tra 1 e 10
for(int i = 1; i <= 10; i++)
queueList.Push(i);
/* Estrae i valori da queueList, li visualizza e li memorizza
nell'altra coda, queueDeque */