Definire e inizializzare un array in C++ | std::array
Gli array in C++ sono definiti utilizzando la classe std::array
di C++. La classe std::array
è una classe di tipo template
che permette di definire un array di un certo tipo e di specificare la dimensione. La dichiarazione del template viene fatta utilizzando le parentesi angolari <>
specificando il tipo dell’array e la dimensione, separando i due parametri con una virgola.
Dichiarazione di una array in C++ utizzando la classe std::array
Per dichiarare ad esempio un array di 10 interi dobbiamo prima di tutto includere l’header <array>
che contiene la dichiarazione della classe std::array
. Quindi nel nostro programma potremo dichiarare il vettore richiesto in questo modo:
#include <array>
int main() {
std::array<int,10> a;
return 0;
}
Inizializzazione di un array in C++ con la classe std::array
Inizializzare tutti gli elementi di un array ad uno stesso valore
Per inizializzare l’array dichiarato prima dobbiamo utilizzare la funzione fill
della classe std::array
per inizializzare tutti i valori dell’array ad un unico valore.
#include <array>
int main() {
std::array<int,10> a;
a.fill(1); // inizializzo tutti gli elementi dell'array a 1
return 0;
}
Il contenuto di a
dopo l’inizializzazione sará:
Come puoi vedere utilizzare la calsse std::array
per inizializzare un array è molto semplice perché un oggetto di una classe ci mette a disposizione dei metodi con cui possiamo chiedergli di fare delle cose. In questo caso std::array
ha un metodo fill()
che permette di inizializzare tutti gli elementi dell’array ad uno stesso valore. Ci sono anche numerosi altri metodi che possono essere utilizzati su di una classe std::array
che vedremo in seguito.
Inizializzare un array con un ciclo for
Per inizializzare un array di classe std::array
con un ciclo for dobbiamo utilizzare il metood size()
che ritorna la dimensione dell’array. Questo perché una variabile di tipo std::array
é un oggetto e come tale ci mette a disposizione i metodi della sua classe.
Per inizializzare quini l’array prima definito mettendo in ogni posizione il valore della posizione, ottennedo quindi alla fine un array cosí strutturato
Dovremo utilizzare il seguente codice che fa uso del ficlo for
:
#include <array>
int main() {
std::array<int,10> a;
for(int i=0;i<a.size();i++) {
a[i]=i;
}
return 0;
}
Dopo il ciclo il contenuto dell’array sará:
Stampare un array in C++ con la classe std::array
Per stampare il contenuto di un array in C++ possiamo utilizzare due metodi:
stampa un array con un ciclo for
La stampa con un ciclo for ha senso quando dobbiamo utilizzare l’indice dell’elemento che stampiamo per fare ulteriori operazioni. Ad esempio se fossimo interessati a stampare non solo il valore dell’elemento ma anche l’indice dell’elemento questo sará il metodo da utilizzare. Per stampare dobbiamo ovviamente includere l’header <iostream>
che contiene il metodo std::cout
che permette di stampare un oggetto.
#include <iostream>
#include <array>
int main() {
std::array<int,10> a;
a.fill(1);
for(auto i =0;i< a.size(); i++) {
std::cout << i << " = " << a[i] << "\n";
}
return 0;
}
l’ouput sará:
0 = 1
1 = 1
2 = 1
3 = 1
4 = 1
5 = 1
6 = 1
7 = 1
8 = 1
9 = 1
stampa un array con un ciclo range for
Nel caso in siamo invece interessati solo al valore di ogni elemento dell’array, allora é ragionevole utilizzare il range for che permette di ciclare tutti gli elementi dell’array senza necessitá di utilizzare una variabile per l’indice. Dichiareremo nel for una variabile (usando la keyword auto
cosí da far dedurre al compilatore il tipo corretto per la variabile) che sará il valore dell’elemento che stiamo ciclando.
#include <iostream>
#include <array>
int main() {
std::array<int,10> a;
a.fill(1);
for(auto el : a) {
std::cout << el << " ";
}
return 0;
}
l’ouput sará:
1 1 1 1 1 1 1 1 1 1