Newsgroup: it.comp.lang.delphi
Titolo: lista Puntatori o Array?

Ua domanda....
Differenza tra fare una lista puntatori o un array aperto?
Vorrei sapere in particolare Vantaggi e svantaggi...
es.
type
  PPippo = ^TPippo
  TPippo = record
    Pluto : Integer;
   Topolino : string[10];
end;
//Array
var
  EvnBuff : array of TPippo;
begin
  Finalize(EvnBuff);
  while Qualcosa di non definito do begin
   Inc(FCount);
   SetLength(EvnBuff, FCount);
   EvnBuff[FCount - 1].Pluto := Qualcosa;
  end;
// con un TList
var
  EvnBuff ; TList;
 Pippo : PPippo
begin
  while Qualcosa di non definito do begin
    New(Pippo);
   Pippo^.Pluto := Qualcosa;
   EvnBuff.Add(Pippo);
  end;
Ciao e grazie


Mars University: «Knowledge brings Fear»

Vorrei sapere in particolare Vantaggi e svantaggi...
La lista e' la visione ad oggetti di quello che e' un array: implementa
quindi, ad un livello di astrazione maggiore, tutti i metodi che servono per
accedere e manipolare i dati contenuti in essa.
Mi sembra di averti detto tutto e niente allo stesso tempo, ma questa e' la
verita': la tlist e' semplicemente un modo piu' semplice e vantaggioso di
gestire un array. Almeno: cosi' la vedo io :-)
Ciao
-- 
Morde. 
(
mo...@despammed.com
)
M-List di icld: 
http://it.groups.yahoo.com/group/icld/

 gestire un array. Almeno: cosi' la vedo io :-)
Credo che la domanda fosse un'altra:
vuole un parere per scegliere fra una lista dinamica a puntatori ed un 
array dinamico...
Il fatto è che dipende da che tipo di accesso ai dati fa: se è 
importante che l'accesso sia "a costo fisso" e gli accessi sono 
ugualmente distribuiti sulla lista, è meglio un array.
Se invece, per esempio ma non è l'unico caso, devi spesso accedere 
all'elemento x e agli n elementi seguenti può essere meglio la lista 
di puntatori.
Ciao,
--
Andrea /\/\agni
http://www.delphiedintorni.it

 array dinamico...
Beh, nell'esempio che faceva tdk1981 il confronto era fra un array
dinamico _manuale_ e una TList, il che, dato che TList e' implementata
con un array dinamico dai tempi di D1, direi che e' lo stesso (se non
che TList.Add, quando alloca, riserva spazio per piu' item di quelli
strettamente necessari).
Cmq, alcune implementazioni di container di diversi tipi sono contenute
nelle librerie SysTools dell'ex-TurboPower (su
sf.net/projects/tpsystools
)
Saluti
Paolo Arosio
-- 
"La dimostrazione dell'esistenza di specie intelligenti nell'universo
 e' che non ci vengono a trovare" [Calvin & Hobbes]

 strettamente necessari).
Quello che scrivi ovviamente è corretto, guardando il subject però 
sono portato a pensare che intendesse un'altra cosa...


 sono portato a pensare che intendesse un'altra cosa...
Certo, in questo caso allora aggiungerei a quanto hai scritto che il
problema principale con l'array dinamico e' la scarsa efficienza nella
fase di inserimento, specie per come l'aveva presentata l'OP.
Per quel che riguarda la lettura invece concordo che la scelta della
struttura dovrebbe essere fatta in funzione del tipo di accesso che si
prevede piu' frequente (con verifica che il caso peggiore sia
accettabile).
Sempre per all'OP vorrei segnalare anche la presenza, anche nella VCL
(contnrs.pas), di diversi tipi di contenitori: Stack, Queue, hashed
tables.
