2D vektors ir a vektors no vektora. Tāpat kā 2D masīvi, mēs varam deklarēt un piešķirt vērtības 2D vektoram!
Pieņemot, ka esat iepazinies ar normālu vektoru C++ valodā, ar piemēra palīdzību mēs demonstrējam, kā 2D vektors atšķiras no parasta vektora:
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 { /* Pirmais elements ar 2 vērtībām. */ {1, 2}, /* Otrais elements ar 3 vērtībām. */ {4, 5, 6}, /* Trešais elements ar 4 vērtībām. */ {7, 8, 9, 10} }; /* Tagad mēs izdrukājam vektoru, kuru tikko definējām, izmantojot vienkāršu ligzdotu cilpu. */ for (int i = 0; i { for (int j = 0; j { cout<< vect[i][j] << ' '; } cout << endl; } return 0; }> |
>
>
2D vektorā katrs elements ir vektors.
Laika sarežģītība: O(1)
Palīgtelpa: 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(rinda); /* 21. rindā mēs izveidojām 2D vektoru un piešķīrām tam 'rindas'(šajā gadījumā 5) vienību ietilpību. */ /* Tagad mēs turpināsim izveidot mūsu 2D vektora struktūru, piešķirot rindu un kolonnu vērtību caur ligzdotu cilpu. */ for(int i = 0; i { /* Kolonnas lieluma deklarēšana. */ int col = kolonna[i]; /* 43. rindā deklarējam i-to rindu atbilstoši kolonnas izmēram. Mēs izveidojam normālu kapacitātes vektoru 'col', kas katrā for cilpas iterācijā definēs vērtības katrā rindā */ vec[i] = vektors |
>
>Izvade
1 2 3 4 5 6 7 8 9>
Laika sarežģītība: O(N*N)
Palīgtelpa: O(N*N)
Vēl viena pieeja, lai piekļūtu vektora elementiem:
C++
<>div> id=>'highlighter_223295'> class>=>'syntaxhighlighter nogutter '>>'0'>> |
>
>Izvade
1 2 3 4 5 6 7 8 9>
Laika sarežģītība: O(N*N)
Palīgtelpa: O(N*N)
Tāpat kā Java robainos masīvus, katrs 2D vektora elements var saturēt atšķirīgu vērtību skaitu.
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 { /* Pirmais elements ar 2 vērtībām. */ {1, 2}, /* Otrais elements ar 3 vērtībām. */ {4, 5, 6}, /* Trešais elements ar 4 vērtībām. */ {7, 8, 9, 10} }; /* Tagad mēs izdrukājam vektoru, kuru tikko definējām, izmantojot vienkāršu ligzdotu cilpu. */ for (int i = 0; i { for (int j = 0; j { cout<< vect[i][j] << ' '; } cout << endl; } return 0; }> |
>
>Izvade
1 2 4 5 6 7 8 9 10>
Vingrinājumu problēma: Definējiet 2D vektoru ar dažāda izmēra kolonnām.
Piemēri:
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>
2D vektori bieži tiek uzskatīti par matricu ar rindām un kolonnām tajā. Zem pārsega tie faktiski ir 2D vektora elementi.
Vispirms mēs deklarējam veselu skaitļu mainīgo ar nosaukumu rinda un pēc tam masīvu ar nosaukumu kolonna, kurā tiks saglabāta katras rindas lieluma vērtība.
Pēc tam mēs turpinām inicializēt katras rindas atmiņu pēc kolonnas lieluma.
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 , vektors |
python ceļa iestatījums
>
>Izvade
1 2 3 4 5 1 2 3 1 2 3 4 1 2 1>
Cita pieeja
Pieņemsim, ka mēs vēlamies inicializēt 2D vektoru n rindas un m kolonnas ar vērtību 0.
C++
>
>Izvade
0 0 0 0 0 0 0 0 0 0 0 0>
Laika sarežģītība: O(N*M)
Palīgtelpa: O(N*M)
Vēl viena pieeja:
Pieņemsim, ka mēs vēlamies izveidot 2D vektoru n rindas un m kolonnas un ievades vērtības.
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 , vektors |
>
>Izvade
1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8>
Laika sarežģītība: O(N*M)
Palīgtelpa: O(N*M)
Mēs ceram, ka atstājat šo rakstu, labāk izprotot 2D vektorus, un tagad esat pietiekami pārliecināts, lai tos lietotu pats.