robs05
13-01-2009, 18:17
Salve,
vorrei chiarire un dubbio che differenza c'è tra list<Item *> e list<Item>?
Provo a dare una risposta:
In effetti list<Item> lista dichiaro una lista che può contenere istanze della classe Item. Posso inserire elementi con il metodo lista.push_back()
es.
list<Item> lista;
Item uno(1);
Item due(2);
lista.push_back(uno);
lista.push_back(due);
list<Item>::iterator it = lista.begin();
for(; it != lista.end();it++)
cout << it->getX() << endl;
e questo codice gira.
Invece con list<Item *> lista dichiaro un contenitore che può contenere puntatori a istanze di quella classe quindi
list<Item *> lista;
Item *uno = new Item(1);
Item due(2);
lista.push_back(uno);
lista.push_back(&due);
list<Item *>::iterator it = lista.begin();
for(; it != lista.end();it++)
cout << (*it)->getX() << endl;
e questo codice anche gira!
La mie domande sono:
le affermaizoni che ho fatto sono giuste?
se si qual'è la differenza nell'usare la prima metodologia oppure la seconda?
quando conviene usare la prima o la seconda?
sono scelte implementative? si è liberi di fare come crede o sono legate a qualcosa?
grazie mille
vorrei chiarire un dubbio che differenza c'è tra list<Item *> e list<Item>?
Provo a dare una risposta:
In effetti list<Item> lista dichiaro una lista che può contenere istanze della classe Item. Posso inserire elementi con il metodo lista.push_back()
es.
list<Item> lista;
Item uno(1);
Item due(2);
lista.push_back(uno);
lista.push_back(due);
list<Item>::iterator it = lista.begin();
for(; it != lista.end();it++)
cout << it->getX() << endl;
e questo codice gira.
Invece con list<Item *> lista dichiaro un contenitore che può contenere puntatori a istanze di quella classe quindi
list<Item *> lista;
Item *uno = new Item(1);
Item due(2);
lista.push_back(uno);
lista.push_back(&due);
list<Item *>::iterator it = lista.begin();
for(; it != lista.end();it++)
cout << (*it)->getX() << endl;
e questo codice anche gira!
La mie domande sono:
le affermaizoni che ho fatto sono giuste?
se si qual'è la differenza nell'usare la prima metodologia oppure la seconda?
quando conviene usare la prima o la seconda?
sono scelte implementative? si è liberi di fare come crede o sono legate a qualcosa?
grazie mille