Linguaggio C++

Libreria Vector

Introduzione alla libreria vector del C++: utilizzo del contenitore dinamico più importante della STL, metodi fondamentali, gestione memoria e laboratorio guidato.

La libreria <vector> fornisce il contenitore dinamico più utilizzato della STL. Un vector è un array che può crescere automaticamente e fornisce metodi molto comodi per inserire, rimuovere e gestire dati.

È uno degli strumenti fondamentali del C++ moderno.


1️⃣ Inclusione della libreria


#include <vector>
using namespace std;

2️⃣ Perché usare vector?

  • si ridimensiona automaticamente
  • supporta accesso casuale O(1)
  • è sicuro e gestisce la memoria da solo
  • funziona perfettamente con la libreria <algorithm>

3️⃣ Principali metodi di std::vector

MetodoDescrizione
push_back(x)Aggiunge un elemento in fondo
pop_back()Rimuove l’ultimo elemento
size()Numero di elementi
empty()Ritorna true se è vuoto
clear()Svuota il vettore
at(i)Accesso con controllo dei limiti
operator[i]Accesso diretto senza controllo
front()Primo elemento
back()Ultimo elemento
insert()Inserisce in una posizione
erase()Rimuove elementi
resize(n)Ridimensiona il vettore
reserve(n)Riserva memoria
capacity()Memoria attualmente allocata

4️⃣ Dichiarazione e uso base


vector v;

v.push_back(10);
v.push_back(20);

cout << v[0];      // 10
cout << v.at(1);   // 20

5️⃣ Inizializzazione


vector v = {1, 2, 3, 4};
vector v2(5);       // 5 elementi inizializzati a 0
vector v3(5, 7);    // 5 elementi inizializzati a 7

6️⃣ Iterazione


for(int x : v) {
    cout << x << " ";
}

7️⃣ Inserimento e rimozione


vector v = {1, 2, 3};
v.insert(v.begin() + 1, 10);   // 1 10 2 3
v.erase(v.begin() + 2);        // 1 10 3

8️⃣ Uso con algorithm


sort(v.begin(), v.end());
reverse(v.begin(), v.end());

9️⃣ Capacità e gestione memoria

Il vector raddoppia la capacità quando finisce lo spazio:


cout << v.size();
cout << v.capacity();

Con reserve() puoi evitarlo:


v.reserve(1000);

🔟 Esempio completo


vector v;

for(int i = 0; i < 10; i++)
    v.push_back(i * 2);

for(int x : v)
    cout << x << " ";
LABORATORIO

Uso del Contenitore Vector

In questo laboratorio imparerai a manipolare un vector aggiungendo, rimuovendo e ordinando elementi, oltre a comprendere la gestione della memoria e della capacità.


1 Creazione vettore

Crea un vettore di 10 numeri casuali tra 1 e 100.


vector v;

for(int i = 0; i < 10; i++)
    v.push_back(1 + rand() % 100);

2 Inserimento e cancellazione

Inserisci un valore in posizione 5 e rimuovi l elemento in posizione 2.


v.insert(v.begin() + 5, 999);
v.erase(v.begin() + 2);

3 Ordinamento

Ordina il vettore in modo crescente e poi decrescente.


sort(v.begin(), v.end());
reverse(v.begin(), v.end());

4 Analisi capacità

Stampa come cambiano size e capacity con le inserzioni.


cout << "Size: " << v.size();
cout << "Capacity: " << v.capacity();

5 Esercizi

  • Crea un programma che elimina tutti i numeri pari dal vettore.
  • Conta quante volte compare un certo valore inserito dall utente.
  • Duplica ogni elemento (es. 3 → 3 3) all interno del vettore.
  • Simula una “coda di attesa” usando vector.