Un vector 2D este a vector a vectorului. La fel ca și tablourile 2D, putem declara și atribui valori unui vector 2D!
Presupunând că sunteți familiarizat cu un vector normal în C++, cu ajutorul unui exemplu demonstrăm mai jos cum diferă un vector 2D de un vector normal:
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 { /* Elementul unu cu 2 valori în el. */ {1, 2}, /* Elementul doi cu 3 valori în el. */ {4, 5, 6}, /* Elementul trei cu 4 valori în el. */ {7, 8, 9, 10} }; /* Acum tipărim vectorul pe care tocmai l-am definit folosind o buclă for imbricată simplă. */ for (int i = 0; i { for (int j = 0; j { cout<< vect[i][j] << ' '; } cout << endl; } return 0; }> |
>
>
Într-un vector 2D, fiecare element este un vector.
Complexitatea timpului: O(1)
Spațiu 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(rând); /* Pe linia 21 am creat un vector 2D și i-am atribuit o capacitate de 'rând' (în acest caz 5) unități. */ /* Acum vom continua la crearea structurii vectorului nostru 2D prin alocarea valorii rândurilor și coloanelor printr-o buclă imbricată for. */ for(int i = 0; i { /* Declararea dimensiunii coloanei. */ int col = coloana[i]; /* Pe a 43-a linie declarăm rândul i la dimensiunea coloanei. Creăm un vector normal de capacitate 'col' care în fiecare iterație a buclei for va defini valorile din interiorul fiecărui rând */vec[i] = vector |
>
>Ieșire
1 2 3 4 5 6 7 8 9>
Complexitatea timpului: O(N*N)
Spațiu auxiliar: O(N*N)
O altă abordare pentru a accesa elementele vectoriale:
C++
<>div> id=>'highlighter_223295'> class>=>'syntaxhighlighter nogutter '>>'0'>> |
>
>Ieșire
1 2 3 4 5 6 7 8 9>
Complexitatea timpului: O(N*N)
Spațiu auxiliar: O(N*N)
La fel ca și matricele zimțate din Java, fiecare element al unui vector 2D poate conține un număr diferit de 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 { /* Elementul unu cu 2 valori în el. */ {1, 2}, /* Elementul doi cu 3 valori în el. */ {4, 5, 6}, /* Elementul trei cu 4 valori în el. */ {7, 8, 9, 10} }; /* Acum tipărim vectorul pe care tocmai l-am definit folosind o buclă for imbricată simplă. */ for (int i = 0; i { for (int j = 0; j { cout<< vect[i][j] << ' '; } cout << endl; } return 0; }> |
>
>Ieșire
1 2 4 5 6 7 8 9 10>
Problema exercițiului: Definiți vectorul 2D cu diferite dimensiuni de coloane.
Exemple:
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>
Vectorii 2D sunt adesea tratați ca o matrice cu rânduri și coloane în interiorul acesteia. Sub capotă sunt de fapt elemente ale vectorului 2D.
Mai întâi declarăm o variabilă întreagă numită rând și apoi o matrice numită coloană care va păstra valoarea mărimii fiecărui rând.
După aceea, procedăm la inițializarea memoriei fiecărui rând după dimensiunea coloanei.
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 |
găsiți numere blocate pe Android
>
>Ieșire
1 2 3 4 5 1 2 3 1 2 3 4 1 2 1>
O altă abordare
Să presupunem că vrem să inițializam un vector 2D de n rânduri și m coloane, cu valoarea 0.
C++
>
>Ieșire
0 0 0 0 0 0 0 0 0 0 0 0>
Complexitatea timpului: O(N*M)
Spațiu auxiliar: O(N*M)
O altă abordare:
Să presupunem că vrem să creăm un vector 2D de n rânduri și m coloane și valori de intrare.
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 |
>
>Ieșire
1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8>
Complexitatea timpului: O(N*M)
Spațiu auxiliar: O(N*M)
Sperăm că veți lăsa acest articol cu o mai bună înțelegere a vectorilor 2D și că acum sunteți suficient de încrezători pentru a-i aplica pe cont propriu.