4° Anno TEORIA 6. Programmazione ad oggetti: il linguaggio C++ | Page 44

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