Differenze tra Vector e Liste in C++
Introduzione
Se state studiando informatica ed in particolare approfondendo i linguaggi usati dai programmatori di software, saprete che tra le tante voci ci sono quelle inerenti i Vector e le Liste in C++. In riferimento a ciò, è importante sottolineare che esistono delle differenze sostanziali tra i due, per cui è opportuno conoscerli a fondo entrambi in modo da fare poi le giuste valutazioni prima di procedere con la programmazione. A tale proposito nei passi successivi di questa guida, analizzeremo le differenze che riguardano i Vector e le Liste in C++ in merito all'inserimento, alla cancellazione, all'acceso casuale e alle funzioni speciali.
Occorrente
- Software di programmazione
Inserire e cancellare gli elementi da una lista
In questo articolo discuteremo quindi le differenze tra i Vector e le Liste in C ++, e per iniziare diciamo subito che sia i primi che le seconde sono dei contenitori sequenziali della libreria di modelli standard C ++. Ma tuttavia ci sono molte altre differenze tra loro a causa dell'implementazione interna. Ad esempio la lista memorizza gli elementi in una posizione di memoria non contigua ovvero ne utilizza internamente una doppiamente collegata, mentre il vettore memorizza quegli elementi in posizioni contigue come un array cioè uno schieramento. Premesso ciò, la prima differenza tra i Vector e le Liste in C++ sta nell'inserimento e nella cancellazione. Entrambi in una lista sono molto efficienti rispetto al vettore perché per inserire un elemento all'inizio, alla fine o al centro solo un paio di puntatori vengono scambiati, mentre inserendo e cancellando il vettore all'inizio o al centro tutti gli elementi si spostano di uno. Da ciò si evince che in C++ l'inserimento e la cancellazione nelle liste sono molto più efficienti del vettore.
Accedere agli elementi usando gli algoritmi
Poiché in C++ le liste sono implementate internamente non è possibile ottenere l'accesso casuale, e ciò significa che per arrivare al 15° elemento nell'elenco è necessario scorrere i primi 14 uno per uno. Nei Vector invece quest'ultimo memorizza elementi in posizioni di memoria contigue come un array. Pertanto, nel vettore è possibile l'accesso casuale, ovvero potete arrivare direttamente al 15° elemento senza sfogliare gli altri uno per uno ed usando degli appositi algoritmi del tipo STL.
Preferire l'accesso con funzioni extra
A questo punto avendo appreso nel passo precedente della guida che le liste non forniscono l'accesso casuale, molti algoritmi STL non possono essere utilizzati; infatti, le liste assegnano alcune funzioni extra per Ordinamento, Splicing, Rimozione di elementi e Identificazione di quelli unici. Vector che invece fornisce l'accesso casuale con normali algoritmi STL, si preferisce poiché l'operazione è molto più semplificata.