Un vettore 2D è a vettore del vettore. Come gli array 2D, possiamo dichiarare e assegnare valori a un vettore 2D!
Supponendo che tu abbia familiarità con un vettore normale in C++, con l'aiuto di un esempio dimostreremo come un vettore 2D differisce da un vettore normale di seguito:
C++
/*> C++ program to demonstrate a 2D vector where> each of its elements is of different size.> */> #include> #include> using> namespace> std;> int> main()> {> >/*> >We initialize a 2D vector> >named 'vect' on line 16 with> >different number of values> >in each element.> >*/> > >vectorint>> vect { /* Elemento uno con 2 valori al suo interno. */ {1, 2}, /* Elemento due con 3 valori al suo interno. */ {4, 5, 6}, /* Elemento tre con 4 valori al suo interno. */ {7, 8, 9, 10} }; /* Ora stampiamo il vettore che abbiamo appena definito utilizzando un semplice ciclo for nidificato. */ for (int i = 0; i { for (int j = 0; j { cout<< vect[i][j] << ' '; } cout << endl; } return 0; }> |
>
>
In un vettore 2D, ogni elemento è un vettore.
Complessità temporale: O(1)
Spazio ausiliario: O(1)
C++
/*> C++ program to create a 2D vector where> every row has a certain number of values> as defined by the user.(On line 13)> */> > #include> #include> using> namespace> std;> int> main()> {> > >/* Here we tell how many rows> >the 2D vector is going to have. */> >int> row = 5;> > >/* We define the number of values> >each row is supposed to have. */> >int> column[] = {5, 3, 4, 2, 1};> > >/*> >We now create a vector of vector with size> >equal to row.> >*/> > >vectorint>> vec(riga); /* Alla riga 21 abbiamo creato un vettore 2D e gli abbiamo assegnato una capacità di unità 'riga'(in questo caso 5). */ /* Ora procederemo a creare la struttura del nostro vettore 2D assegnando il valore di righe e colonne tramite un ciclo for nidificato. */ for(int i = 0; i { /* Dichiara la dimensione della colonna. */ int col = column[i]; /* Sulla 43a riga dichiariamo la i-esima riga con la dimensione della colonna. Creiamo un normale vettore di capacità 'col' che in ogni iterazione del ciclo for definirà i valori all'interno di ogni riga */ vec[i] = vettore |
>
>Produzione
1 2 3 4 5 6 7 8 9>
Complessità temporale: O(N*N)
Spazio ausiliario: O(N*N)
Un altro approccio per accedere agli elementi vettoriali:
C++
<>div> id=>'highlighter_223295'> class>=>'syntaxhighlighter nogutter '>>'0'>> |
>
>Produzione
1 2 3 4 5 6 7 8 9>
Complessità temporale: O(N*N)
Spazio ausiliario: O(N*N)
Come gli array frastagliati di Java, ogni elemento di un vettore 2D può contenere un numero diverso di valori.
C++
/*> C++ program to demonstrate a 2D vector where> each of its elements is of different size.> */> #include> #include> using> namespace> std;> int> main()> {> >/*> >We initialize a 2D vector> >named 'vect' on line 16 with> >different number of values> >in each element.> >*/> > >vectorint>> vect { /* Elemento uno con 2 valori al suo interno. */ {1, 2}, /* Elemento due con 3 valori al suo interno. */ {4, 5, 6}, /* Elemento tre con 4 valori al suo interno. */ {7, 8, 9, 10} }; /* Ora stampiamo il vettore che abbiamo appena definito utilizzando un semplice ciclo for nidificato. */ for (int i = 0; i { for (int j = 0; j { cout<< vect[i][j] << ' '; } cout << endl; } return 0; }> |
>
>Produzione
1 2 4 5 6 7 8 9 10>
Problema di esercizio: Definisci il vettore 2D con diverse dimensioni di colonne.
Esempi:
Input : Number of rows : 5 Number of columns in rows : 2 3 4 5 1 Output : 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 Input : Number of rows : 3 Number of columns in rows : 3 2 1 Output : 1 2 3 1 2 1>
I vettori 2D sono spesso trattati come una matrice con righe e colonne al suo interno. Sotto il cofano ci sono in realtà elementi del vettore 2D.
Dichiariamo prima una variabile intera denominata riga e quindi un array denominato colonna che conterrà il valore della dimensione di ciascuna riga.
Successivamente procediamo a inizializzare la memoria di ogni riga in base alla dimensione della colonna.
C++
// CPP program> #include> #include> using> namespace> std;> int> main()> {> >int> n = 4;> >int> m = 5;> > >/*> >Create a vector containing 'n'> >vectors each of size 'm'.> >*/> >vectorint>> vec( n , vettore |
disinstallare angolare cli
>
>Produzione
1 2 3 4 5 1 2 3 1 2 3 4 1 2 1>
Un altro approccio
Supponiamo di voler inizializzare un vettore 2D di N righe e M colonne, con un valore 0.
C++
>
>Produzione
0 0 0 0 0 0 0 0 0 0 0 0>
Complessità temporale: O(N*M)
Spazio ausiliario: O(N*M)
Ancora un altro approccio:
Supponiamo di voler creare un vettore 2D di N righe e M colonne e valori di input.
C++
// CPP program> #include> #include> using> namespace> std;> int> main()> {> >int> n = 4;> >int> m = 5;> > >/*> >Create a vector containing 'n'> >vectors each of size 'm'.> >*/> >vectorint>> vec( n , vettore |
>
>Produzione
1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8>
Complessità temporale: O(N*M)
Spazio ausiliario: O(N*M)
Ci auguriamo che lascerai questo articolo con una migliore comprensione dei vettori 2D e che ora sarai abbastanza sicuro da applicarli da solo.