Un vector 2D és a vector del vector. Com les matrius 2D, podem declarar i assignar valors a un vector 2D!
Suposant que esteu familiaritzat amb un vector normal en C++, amb l'ajuda d'un exemple demostrem com un vector 2D difereix d'un vector normal a continuació:
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 { /* Element 1 amb 2 valors. */ {1, 2}, /* Element dos amb 3 valors. */ {4, 5, 6}, /* Element tres amb 4 valors. */ {7, 8, 9, 10} }; /* Ara imprimim el vector que acabem de definir amb un simple bucle for imbricat. */ per (int i = 0; i { per (int j = 0; j { cout<< vect[i][j] << ' '; } cout << endl; } return 0; }> |
>
>
En un vector 2D, cada element és un vector.
Complexitat temporal: O(1)
Espai auxiliar: 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(fila); /* A la línia 21 vam crear un vector 2D i li vam assignar una capacitat de 'fila'(en aquest cas 5) unitats. */ /* Ara procedirem a crear l'estructura del nostre vector 2D assignant el valor de files i columnes mitjançant un bucle for imbricat. */ for(int i = 0; i { /* Declaració de la mida de la columna. */ int col = column[i]; /* A la línia 43, declarem la i-a fila a la mida de la columna. Creem un vector normal de capacitat 'col' que en cada iteració del bucle for definirà els valors dins de cada fila */vec[i] = vector |
>
>Sortida
1 2 3 4 5 6 7 8 9>
Complexitat temporal: O(N*N)
Espai auxiliar: O(N*N)
Un altre enfocament per accedir als elements vectorials:
C++
<>div> id=>'highlighter_223295'> class>=>'syntaxhighlighter nogutter '>>'0'>> |
>
>Sortida
1 2 3 4 5 6 7 8 9>
Complexitat temporal: O(N*N)
Espai auxiliar: O(N*N)
Igual que les matrius irregulars de Java, cada element d'un vector 2D pot contenir un nombre diferent de valors.
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 { /* Element 1 amb 2 valors. */ {1, 2}, /* Element dos amb 3 valors. */ {4, 5, 6}, /* Element tres amb 4 valors. */ {7, 8, 9, 10} }; /* Ara imprimim el vector que acabem de definir utilitzant un bucle for imbricat senzill. */ per (int i = 0; i { per (int j = 0; j { cout<< vect[i][j] << ' '; } cout << endl; } return 0; }> |
>
>Sortida
1 2 4 5 6 7 8 9 10>
Problema de l'exercici: Definiu el vector 2D amb diferents mides de columnes.
Exemples:
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>
Els vectors 2D sovint es tracten com una matriu amb files i columnes al seu interior. Sota el capó són en realitat elements del vector 2D.
Primer declarem una variable entera anomenada fila i després una matriu anomenada columna que conté el valor de la mida de cada fila.
Després d'això, procedim a inicialitzar la memòria de cada fila per la mida de la columna.
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 , vector |
tojson java
>
>Sortida
1 2 3 4 5 1 2 3 1 2 3 4 1 2 1>
Un altre Enfocament
Suposem que volem inicialitzar un vector 2D de n files i m columnes, amb un valor 0.
C++
>
>Sortida
0 0 0 0 0 0 0 0 0 0 0 0>
Complexitat temporal: O(N*M)
Espai auxiliar: O(N*M)
Un altre enfocament:
Suposem que volem crear un vector 2D de n files i m columnes i valors d'entrada.
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 , vector |
>
>Sortida
1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8>
Complexitat temporal: O(N*M)
Espai auxiliar: O(N*M)
Esperem que deixeu aquest article amb una millor comprensió dels vectors 2D i ara tingueu prou confiança per aplicar-los pel vostre compte.