Quando abbiamo utilizzato il linguaggio C ed avevamo bisogno di di un array con lunghezza variabile dovevamo ricorrere all ’ allocazione dinamica , ricordandoci di allocare e deallocare opportunamente la memoria .
Stesso discorso valeva per le liste linkate ( o liste a puntatori ), che dovevamo inoltre anche implementare da soli .
Fortunatamente il linguaggio C ++ ci viene incontro , offrendoci in automatico le implementazioni delle due classi speciali vector e list .
Un oggetto vector memorizza gli elementi che ne fanno parte in posizioni di memoria contigue .
Un oggetto list memorizza gli elementi che ne fanno parte in posizioni di memoria non contigue strutturando una lista doppiamente linkata .
Nel linguaggio C ++ per questo motivo vector e le list differiscono enormente nelle operazioni di inserimento e di cancellazione .
Entrambe le operazioni in una list sono molto più efficienti rispetto ad un vector perché per inserire un elemento all ' inizio , alla fine o al centro si scambiano solo un paio di puntatori , mentre nel vettore occorre operare una serie di shift .
Linguaggio C ++: peculiarità – le classi vector e list
Quando abbiamo utilizzato il linguaggio C ed avevamo bisogno di di un array con lunghezza variabile dovevamo ricorrere all ’ allocazione dinamica , ricordandoci di allocare e deallocare opportunamente la memoria .
Stesso discorso valeva per le liste linkate ( o liste a puntatori ), che dovevamo inoltre anche implementare da soli .
Fortunatamente il linguaggio C ++ ci viene incontro , offrendoci in automatico le implementazioni delle due classi speciali vector e list .
Un oggetto vector memorizza gli elementi che ne fanno parte in posizioni di memoria contigue .
Un oggetto list memorizza gli elementi che ne fanno parte in posizioni di memoria non contigue strutturando una lista doppiamente linkata .
Nel linguaggio C ++ per questo motivo vector e le list differiscono enormente nelle operazioni di inserimento e di cancellazione .
Entrambe le operazioni in una list sono molto più efficienti rispetto ad un vector perché per inserire un elemento all ' inizio , alla fine o al centro si scambiano solo un paio di puntatori , mentre nel vettore occorre operare una serie di shift .
Autore : Prof . Rio Chierego Aprile 2024