Differenza tra Vector e List in C ++

September 18

Il ++ Standard Template Library C contiene due contenitori distinti eppure simili: il vettore e la lista. Un vettore è un insieme di dati in modo sequenziale organizzato che possono aumentare o ridurre in modo dinamico; una lista è un insieme di elementi collegati che non sono necessariamente in sequenza disposti in memoria, ma si può accedere in modo sequenziale in quanto ogni elemento ha un link alla voce successiva. Imparare le differenze tra il vettore e la lista può aiutare a scrivere le soluzioni più ottimizzato in C ++.

inserimento Velocità

I dati contenuti in un vettore sono disposti sequenzialmente nella memoria, il che significa che se si inserisce un elemento all'inizio di un vettore, ogni elemento nel vettore deve essere spostato "down" di uno. Questo è computazionalmente costoso, soprattutto per i grandi vettori. Questa riduzione delle prestazioni viene ogni volta che un elemento viene inserito o rimosso da qualsiasi posizione, tranne l'ultimo elemento del vettore. Con una lista, i dati non sono necessariamente disposte sequenzialmente nella memoria; invece, ogni elemento della lista contiene un link al successivo elemento nella lista. Quando si inserisce in un elenco, l'elemento può essere posizionato ovunque nella memoria, che rende l'inserimento in un elenco molto meno costoso di inserimento in un vettore.

Ordinamento

Il contenitore lista ha un funzione di ordinamento incorporata che consente di ordinare gli elementi sulla base di un dato criterio. Il vettore, tuttavia, non ha questa funzione built-in, e quindi si deve scrivere il codice di smistamento da soli se si desidera ordinare un vettore.

Accesso casuale

Le liste sono più lenti tempi di accesso casuale di vettori. In un vettore, un elemento si può accedere direttamente dal suo indice. Questo dà il vettore tempo di accesso casuale molto veloce. Con una lista, d'altra parte, si può solo accedere direttamente al primo e all'ultimo elementi; è necessario scorrere l'elenco per accedere ad altri elementi; questo può essere molto lento per elenchi di grandi dimensioni.

Ridimensionamento

Vettori crescere in modo dinamico come elementi vengono aggiunti a loro. Quando un vettore cresce, raddoppia il numero di elementi che può contenere. Questo può forzare l'intero vettore di essere spostati in un altro punto nella memoria, che può essere computazionalmente costoso. Le liste non hanno bisogno di memorizzare i loro elementi contigui nella memoria, e possono quindi aumentare o ridurre un elemento alla volta, senza mai dover copiare l'intero elenco in una nuova posizione.