PDA

View Full Version : [c++]vector o array?


NA01
13-05-2004, 19:47
dopo aver dimostrato quanto sono scarso a programmare in più occasioni ho riniziato a dare un'occhiata un pò più approfondita al libro di stroustrup. :D :sofico:
nei suggerimenti alla fine del 3 capitolo al punto 9 consiglia di usare vector, list e map al posto dei semplici array.
data la maggiore complessità però suppongo che rendano più pesante il programma.
cosa mi dite?
dico cavolate? conviene sul serio usare SEMPRE dei contenitori al posto degli array?


ciao!

bizzu
13-05-2004, 20:34
Dalla mia modestissima esperienza di programmazione, la penso così: quando devi creare cose piccole, usa pure gli array, tenendo però presente che il C++ come il C ha pochi controlli su di essi e quindi rischi di avere degli errori indesiderati a run-time.
I contenitori, essendo oggetti, sicuramente rendono più pesante il programma, ma secondo me questo "problema" passa in secondo piano quando vai a scrivere il codice... Prima di tutto perché non ti devi, ogni volta, creare da zero tutto il codice per la gestione (non so se hai mai provato a crearti una lista da solo, è una palla!), poi perché il codice è molto più pulito (con evidenti vantaggi in fase di debug).
Io fossi in te farei così: essendo alle prime armi, farei programmi con array e liste per fare un po' di pratica, se non altro per capirne i principi di funzionamento (che poi sono quelli su cui si basano anche i contenitori). Poi, una volta avendo chiari questi concetti, mi butterei a capofitto a usare solo i contenitori, senza preoccuparsi delle prestazioni che comunque avrebbero un degrado non avvertibile.
Ho detto la mia :p
Bye

Luc@s
13-05-2004, 20:44
oltretutto magari cercando di creare qualcosa di ottimizzato si finisce x ottenere l'effetto contrario

/\/\@®¢Ø
13-05-2004, 21:45
Originariamente inviato da NA01
dopo aver dimostrato quanto sono scarso a programmare in più occasioni ho riniziato a dare un'occhiata un pò più approfondita al libro di stroustrup. :D :sofico:
nei suggerimenti alla fine del 3 capitolo al punto 9 consiglia di usare vector, list e map al posto dei semplici array.
data la maggiore complessità però suppongo che rendano più pesante il programma.
cosa mi dite?
dico cavolate? conviene sul serio usare SEMPRE dei contenitori al posto degli array?


ciao!
Nei casi in cui e' indifferente usare array o vector (ovvero vettorii che non vengono ridimensionati) non ci sono motivi per cui il vector debba essere piu' lento. Una banale implementazione dell'operatore di indicizzazione e'

private:
value_type* data;
...
public:
value_type& operator[](size_type i)
{ return data[i]; }

Visto che generalmente tale codice viene incluso dall'intestazione <vector>, un normale compilatore potra' senza problemi rendere inline la chiamata a funzione eliminando totalmente il costo aggiuntivo.
Negli altri casi il problema non si pone, visto che si tratta di strutture dati diverse pensate per necessita' diverse.
Usare un array quando sarebbe piu' adatta una lista vuol dire complicarsi la vita, visto che la soluzione pseudo-furba potrebbe risultare molto piu' lenta di quella naturale.