Vettore
Lezione 5 di 23 del corso C++ - Libreria standard dei template di Coddy.
Vector nella STL di C++ è essenzialmente un array di dimensioni dinamiche. Può ridimensionarsi automaticamente quando un elemento viene inserito o rimosso. Gli elementi del vector sono memorizzati in un’area contigua, quindi è possibile accedervi, modificarli e attraversarli usando gli iteratori.
Nei vector, i dati vengono inseriti in fondo. Sono una struttura dati più lenta di un array, ma il vector è abbastanza veloce da poter essere usato nella risoluzione di problemi, anche a livello di complessità delle competizioni.
I vector in C++ si implementano includendoli all’inizio con #include <vector>.
!Nota: In C++ esiste un file header non standard chiamato bits/stdc++.h. Può essere incluso all’inizio di un file C++ e puoi usare qualsiasi elemento della libreria standard senza doverli includere singolarmente. (#include <bits/stdc++.h)
#include <iostream>
#include <vector>
using namespace std;
int main()
{
// Codice...
return 0;
}#include <bits/stdc++.h>
using namespace std;
int main()
{
// Codice...
return 0;
}Quindi, come si crea, si inizializza e si usa un vector? Si usa la parola chiave vector<>. All’interno di <> si indica il tipo della variabile, ovvero il tipo di dati degli elementi che verranno memorizzati nel vector. Se vogliamo dichiarare un vector che memorizza numeri interi, usiamo vector<int>.
#include <bits/stdc++.h>
using namespace std;
int main()
{
vector<int> numbers = {1, 2, 3};
cout << numbers[0];
return 0;
}Output:
1Come si vede sopra, i vector si comportano esattamente come gli array. Abbiamo dichiarato un vector di tipo int chiamato numbers e lo abbiamo inizializzato con alcuni valori. Poi, usando le parentesi quadre - [], abbiamo stampato il primo elemento, ovvero l’elemento all’indice 0.
Inseriamo elementi in fondo al vector usando la funzione push_back(). Il metodo push_back() aggiunge un nuovo elemento dopo l’ultimo elemento del vector.
#include <bits/stdc++.h>
using namespace std;
int main()
{
vector<int> numbers = {1, 2, 3};
cout << numbers[2] << endl;
numbers.push_back(10);
cout << numbers[3];
return 0;
}Output:
3
10Come vedi, usiamo il metodo con il nome del vector seguito da un punto - .. Dopo aver usato il metodo push_back(), la dimensione del vector aumenta di uno.
Abbiamo anche il metodo size(), che possiamo usare per ottenere il numero di elementi contenuti in un vector.
#include <bits/stdc++.h>
using namespace std;
int main()
{
vector<int> numbers = {1, 2, 3};
cout << numbers.size();
return 0;
}Output:
3Usiamo spesso il metodo size() quando non conosciamo il numero di elementi contenuti in un vector ma vogliamo scorrerlo; perciò, nella condizione del ciclo usiamo vector.size().
La struttura dati vector offre molte funzionalità e caratteristiche: ad esempio, la funzione resize(n) ridimensiona il vector a n elementi, e molto altro. Le riprenderemo quando studieremo gli algoritmi e le funzioni; per ora, ricorda che i vector sono array di dimensioni dinamiche, come si dichiarano e che per inserire nuovi elementi si usa il metodo push_back().
Esempio: Qui sotto trovi un programma di esempio in cui l’utente continuerà a inserire numeri finché non avrà inserito -1. Useremo un ciclo e un vector per memorizzarli, perché non sappiamo quanti elementi ci saranno.
#include <bits/stdc++.h>
using namespace std;
int main()
{
int x;
vector<int> numbers;
while(x != -1)
{
cin >> x;
numbers.push_back(x);
}
return 0;
}In ogni lezione ti verrà fornita una tabella dei metodi disponibili per la specifica struttura dati C++.
Metodi dei vector
| Metodo | Funzionalità |
| push_back() | Aggiunge un nuovo elemento alla fine del vector |
| pop_back() | Rimuove l’ultimo elemento dal vector |
| swap() | Scambia gli elementi specificati |
| front() | Restituisce un riferimento al primo elemento |
| back() | Restituisce un riferimento all’ultimo elemento |
| empty() | Determina se il vector è vuoto |
| clear() | Rimuove tutti gli elementi dal vector |
| resize() | Modifica la dimensione del vector |
| size() | Restituisce il numero di elementi nel vector |
| insert() | Inserisce l’elemento specificato nella posizione indicata |
Sfida
FacileI numeri positivi vengono inseriti dall'input finché non viene inserito -1. Dopodiché, l'ultimo numero naturale inserito N è il numero di riferimento. Stampa ogni elemento per cui N è divisibile senza resto
Per esempio:
Input
5
10
15
-1
100Output
5
10perché 100 è divisibile per 5 e 10, ma non per 15
Input
2
4
6
8
-1
12Output
2
4
6Perché 12 è divisibile per 2, 4 e 6, ma non per 8
Provalo tu
#include <vector>
#include <iostream>
using namespace std;
int main()
{
// Enter your code here
return 0;
}Tutte le lezioni di C++ - Libreria standard dei template
Esercitati da solo: Compilatore C++ online