[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.