logo

2D vektors C++ valodā ar lietotāja noteiktu izmēru

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 (kolonna); for(int j = 0; j { vec[i][j] = j + 1; } } /* Mēs beidzot izmantojam vienkāršu ligzdotu cilpu, lai izdrukātu 2D vektoru, ko tikko izveidojām iepriekš. */ for(int i = 0; i { for (int j = 0; j { cout<< vec[i][j] << ' '; } cout << endl; } return 0; }>

>

>

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'>>
class='comments'>/* C++ kods, lai demonstrētu 2D vektoru ar elementiem (vektoriem) tā iekšpusē. */div>
class='preprocessor'>#include div>
class='preprocessor'>#include div>
class='keyword bold'>using>namespace>std; div>
class='undefined spaces'> div>
class='color1 bold'>int>main() div>
class='plain'>{ div>
class='undefined spaces'>>/* Zemāk mēs inicializējam 2D ​​vektoru ar nosaukumu 'vect' 12. rindā un pēc tam deklarējam vērtības attiecīgi 14., 15. un 16. rindā. */div>
class='undefined spaces'> div>
class='undefined spaces'>>vectorclass='color1 bold'>intclass='plain'>>> vect div>
class='undefined spaces'>>{ div>
class='undefined spaces'>>{1, 2, 3}, div>
class='undefined spaces'>>{4, 5, 6}, div>
class='undefined spaces'>>{7, 8, 9} div>
class='undefined spaces'>>}; div>
class='undefined spaces'> div>
class='undefined spaces'>>/* Tagad mēs izdrukājam vērtības, kuras tikko deklarējām 14., 15. un 16. rindā, izmantojot vienkāršu ligzdotu cilpu ar iteratora palīdzību. */div>
class='undefined spaces'> div>
class='undefined spaces'>>/* vector vect Mēs varam sadalīt šo deklarāciju divās daļās, kas mums palīdzēs izprast tālāk minētos jēdzienus. 1. vektors ir 2D vektors, kas sastāv no vairākiem vektora tipa elementiem. 2. vektors ir 1D vektors, kas sastāv no vairākiem int datiem. Tātad mēs varam izmantot iteratoru, ko nodrošina STL, nevis mainīgo i,j, ko izmanto cilpai. Tas var samazināt kļūdu, kas var rasties wrt ar i, j operācijām (i++, j++) Tālāk esošajā kodā mēs izmantojam iteratoru, lai piekļūtu vektora elementiem. 1. No 2D vektora vektora mēs iegūstam vektora tipa vektorus vect1D. 2. Mēs iegūstam int elementus uz x no vektora vektora 1D vektora. */div>
class='undefined spaces'> div>
class='undefined spaces'>>for>(vektorsintclass='plain'>> vect1D : vect) div>
class='undefined spaces'>>{ div>
class='undefined spaces'>>for>(class='color1 bold'>int>x : vect1D) div>
class='undefined spaces'>>{ div>
class='undefined spaces'>>cout<< x <<>' 'class='plain'>; div>
class='undefined spaces'>>} div>
class='undefined spaces'>>cout<< endl; div>
class='undefined spaces'>>} div>
class='undefined spaces'> div>
class='undefined spaces'>>return>0; div>
class='plain'>} div>div>div>>

>

>

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 (m)); for(int i = 0; i { for(int j = 0; j { vec[i][j] = j + i + 1; } } for(int i = 0; i { for(int j = 0; j { cout<< vec[i][j] << ' '; } cout << endl; } return 0; }>

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 (m)); for(int i = 0; i { for(int j = 0; j { vec[i][j] = j + i + 1; } } for(int i = 0; i { for(int j = 0; j { cout<< vec[i][j] << ' '; } cout << endl; } return 0; }>

>

>

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.