|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Nov 2007
Messaggi: 7
|
[C++] std::vector e std::list
Scusate la domanda che per molti può sembrare un'eresia, quali sono i casi in cui è meglio (o più appropriato) utilizzare std::vector piuttosto che std::list? Proprio non ci arrivo
Nella mia ingenuità pensavo che con std::vector bisognasse definire una dimensione massima predefinita (quindi più di un tot push_back non si possono fare causa overflow, mi viene da assciare vector agli array, quindi se ho un array che può contenere al più 10 elementi non posso mettercene 11), mentre con list il problema non si pone (associo list all'idea di qualcosa di dimanico). Se v è definito come std::vector<int> v; e riempio il vettore di valori, Codice:
for (int i = 0; i < n; ++i)
std::cout << v[i] << std::endl;
return 0;
Se l è la mia lista std::list<int> l; Codice:
for(list<int>::iterator ai=l.begin(); ai!=l.end(); ++ai) Come faccio limitare il mio for partendo dall'elemento jesimo e arrivando solo al kesimo? Grazie in anticipo. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Feb 2006
Messaggi: 1304
|
Non puoi in maniera semplice mi sa... nelle liste gli elementi non hanno una posizione assoluta, ma solo relativa al vicino.
Per cui da begin devi iterare saltando gli elementi fino a J, e quindi iterare come vuoi fino a K. Cmq pare che le liste siano da preferire in casi di massicci inserimenti e rimozioni, dato che possono eseguirle in tempo costante; i vettori invece sono più veloci nell'essere iterati, penso. |
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Nov 2007
Messaggi: 7
|
Ok, grazie.
Io devo fare un inserimento di tutti quanti gli elementi quando inizializzo (leggendo i dati a file) e poi devo fare dei gran cicli (ad essere precisi applicare un algoritmo ricorsivo divide et impera), nessuna ricerca in base ad un indice, ma solo sulla posizione dell'elemento ne eliminazioni. Quindi in effetti sono meglio i vector. Mi puoi confermare che con i vector non ho problemi di overflow e quindi non sono "analoghi" agli array su questo aspetto? Non posso ipotizzare a priori la dimensione massima dei dati da inserire e voglio evitare realloc (stavo appunto ipotizzando di usare liste (o vettori) proprpio x questo). Oppure mi consigliate strutture dati alternative? Tnk! Ultima modifica di bulmachan : 18-09-2008 alle 22:19. |
|
|
|
|
|
#4 | ||
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
Quote:
|
||
|
|
|
|
|
#5 | |
|
Junior Member
Iscritto dal: Nov 2007
Messaggi: 7
|
Quote:
Grazie per la precisazione |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Non fare un discorso specifico del linguaggio, ma fanne una questione algoritmica. In quell'algoritmo utilizzeresti liste o vettori ?
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:39.




















