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
| Metodo | Descrizione |
|---|---|
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à.
- Contenitore
vector - Metodi push_back, erase, insert
- Libreria
<algorithm>
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.