View Single Post
Old 30-11-2009, 17:34   #5
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Ho visto che ogni volta fai una copia. Non è secondo me una buona politica. Ovviamente è l'unica utilizzando il typdef per l'iterator, ma se ti crei una classe per l'iterator allora ti conviene fare un'allocazione a blocchi.
Per simulare la continuità dell'array basta fare un'operazione del genere:
data[i / BLOCK_SIZE][i % BLOCK_SIZE]

Ovviamente in data[i / BLOCK_SIZE] ci sarà l'indirizzo del blocco allocato in memoria.
Quando allochi un nuovo blocco dovrai solo allungare il vettore data, copiandone i valori (in teoria puoi fare anche questo a blocchi di M elementi, così fai una copia solo ogni N * BLOCK_SIZE elementi inseriti nel vettore).
cionci è offline   Rispondi citando il messaggio o parte di esso