[C++] Classe Pila
Ciao a tutti,
non mi è chiaro cosa succede nel ciclo for nell'implementazione dell'overloading dell'operatore <<.
Potreste spiegarmelo?
Grazie dell'aiuto!!
non mi è chiaro cosa succede nel ciclo for nell'implementazione dell'overloading dell'operatore <<.
Potreste spiegarmelo?
class Pila { private: static const int N=2; T P[N]; int t; public: //Funzioni Pila(); void push(const T &); void pop(T&); void top(T&) const; friend ostream & operator<<(ostream &, const Pila &); };
Pila::Pila(){ t=0; } void Pila::push(const T & e){ P[t]=e; t++; } void Pila::pop(T& e){ t--; e=P[t]; } void Pila::top(T& e) const{ e=P[t-1]; } ostream & operator<<(ostream & os, const Pila & p) { for(int i=p.P[p.t-1]; i>=0; i--) //questo punto non mi è chiaro os << p.P[i] << endl; return os; }
Grazie dell'aiuto!!

Risposte
Fa si che ogni "stampa" su file o video di una pila consista in una stampa degli elementi della pila in verticale.
Per esempio ti permette di dare cout<< p dove p è una Pila.
Per esempio ti permette di dare cout<< p dove p è una Pila.
Non è chiarissimo nemmeno a me perché sia scritta così:
i dovrebbe partire dalla posizione dell'ultimo elemento della pila (p.t - 1), non dal suo valore (p.P[p.t - 1]).
Inoltre, una pila per massimo 2 elementi mi sembra poco utile.
ostream & operator<<(ostream & os, const Pila & p) { for(int i=p.P[p.t-1]; i>=0; i--) // questo punto non mi è chiaro os << p.P[i] << endl; return os; }
i dovrebbe partire dalla posizione dell'ultimo elemento della pila (p.t - 1), non dal suo valore (p.P[p.t - 1]).
ostream & operator<<(ostream & os, const Pila & p) { for(int i = p.t - 1; i >= 0; i--) // adesso è un po' più chiaro os << p.P[i] << endl; return os; }
Inoltre, una pila per massimo 2 elementi mi sembra poco utile.