Menu
Coddy logo textTech

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:
1

Come 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
10

Come 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:
3

Usiamo 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

MetodoFunzionalità
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
challenge icon

Sfida

Facile

I 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
100
Output
5
10

perché 100 è divisibile per 5 e 10, ma non per 15

 

Input
2
4
6
8
-1
12
Output
2
4
6

Perché 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