View Full Version : [c++] differenza pila stack o con lista
mistergks
17-06-2014, 18:02
Qual'è la differenza tra una pila dichiarandola stack <type> mystack; e una pila ereditata da una lista?
Class pila : public list<type>
??
mistergks
18-06-2014, 18:23
Up
tomminno
19-06-2014, 16:15
La differenza è che la prima è uno stack propriamente detto ovvero struttura dati che ha un funzionamento di coda LIFO. La seconda è solo un nome di variabile, non è una struttura dati che si comporta come uno stack solo perchè si chiama "pila"! La classe list implementa una lista doppiamente linkata senza accessi diretti agli elementi, tra l'altro derivando pubblicamente esponi le funzionalità di list quindi non avresti un comportamento da stack...
Secondo la documentazione C++ std::stack funziona da wrapper per altri tipi di dato su cui implementare le classiche funzioni stack (push, pop):
http://www.cplusplus.com/reference/stack/stack/
Di fatto puoi implementare uno stack con una lista collegata o un vettore, infatti è quello che si fa generalmente.
Usando la classe stack sei sicuro che puoi usare solo ed esclusivamente le operazioni consentite per una struttura dati di quel tipo, e questo consente di minimizzare eventuali errori.
Ergo: se vuoi uno stack usa la classe stack.
mistergks
22-06-2014, 18:07
Ho capito. Forse meglio ereditare private la list e non pubblic !
Comunque ho capito che mi hanno fatto implementare la classe coda a scopo didattico...
mistergks
29-06-2014, 01:14
Ma quello che non capisco è: se dichiaro una classe pila o coda.. Poi posso usarla come contenitore normalmente?
Tipo la classe:
class miaPila{
....
};
Poi posso fare questo?:
miaPila <int> pila;
[Kendall]
29-06-2014, 12:50
Ma quello che non capisco è: se dichiaro una classe pila o coda.. Poi posso usarla come contenitore normalmente?
Tipo la classe:
class miaPila{
....
};
Poi posso fare questo?:
miaPila <int> pila;
Ti giro la domanda: visto come hai dichiarato la classe miaPila, in quale maniera potresti fare una dichiarazione come quella che hai scritto:
miaPila<int> pila;
???
Sono d'accordo, forse sarebbe meglio prendere in mano un libro e seguire "teoria" ed esempi.
Essendo stato smanettone capisco bene che spesso è più divertente (a volte anche più istruttivo) mettersi a programmare direttamente, ma un minimo di costrutti sintattici servono, specie per rispondere alla tua domanda.
Cioè se vuoi fare X, almeno cerca di vedere su un libro se è spiegato come fare X.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.