2D vektorius C++ su vartotojo nustatytu dydžiu
2D vektorius yra a vektorius vektoriaus. Kaip ir 2D matricos, mes galime deklaruoti ir priskirti reikšmes 2D vektoriui!
Darant prielaidą, kad esate susipažinę su normaliu C++ vektoriumi, pavyzdžio pagalba parodysime, kuo 2D vektorius skiriasi nuo įprasto vektoriaus žemiau:
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 { /* Vienas elementas su 2 reikšmėmis. */ {1, 2}, /* Antras elementas su 3 reikšmėmis. */ {4, 5, 6}, /* Trečias elementas su 4 reikšmėmis. */ {7, 8, 9, 10} }; /* Dabar spausdiname vektorių, kurį ką tik apibrėžėme naudodami paprastą įdėtą kilpą. */ for (int i = 0; i { for (int j = 0; j { cout < < vect[i][j] < < ' '; } cout < < endl; } return 0; }> |
2D vektoriuje kiekvienas elementas yra vektorius.
Laiko sudėtingumas: O(1)
Pagalbinė erdvė: 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(eilutė); /* 21 eilutėje sukūrėme 2D vektorių ir priskyrėme jam 'row' (šiuo atveju 5) vienetų talpą. */ /* Dabar pradėsime kurti savo 2D vektoriaus struktūrą, priskirdami eilučių ir stulpelių reikšmę per įdėtą kilpą. */ for(int i = 0; i { /* Stulpelio dydžio deklaravimas. */ int col = stulpelis[i]; /* 43-ioje eilutėje deklaruojame i-tą eilutę pagal stulpelio dydį. Sukuriame normalų talpos vektorių 'col', kuris kiekvienoje for ciklo iteracijoje apibrėžs kiekvienos eilutės reikšmes */ vec[i] = vektorius |
Išvestis
1 2 3 4 5 6 7 8 9
Laiko sudėtingumas: O (N*N)
Pagalbinė erdvė: O (N*N)
Kitas būdas pasiekti vektorinius elementus:
C++
<> div> id=> 'highlighter_223295'> class> => 'syntaxhighlighter nogutter '> >'0'cellpadding='0'cellspacing='0'>> |
Išvestis
1 2 3 4 5 6 7 8 9
Laiko sudėtingumas: O (N*N)
Pagalbinė erdvė: O (N*N)
Kaip ir dantyti Java masyvai, kiekvienas 2D vektoriaus elementas gali turėti skirtingą skaičių reikšmių.
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 { /* Vienas elementas su 2 reikšmėmis. */ {1, 2}, /* Antras elementas su 3 reikšmėmis. */ {4, 5, 6}, /* Trečias elementas su 4 reikšmėmis. */ {7, 8, 9, 10} }; /* Dabar spausdiname vektorių, kurį ką tik apibrėžėme naudodami paprastą įdėtą kilpą. */ for (int i = 0; i { for (int j = 0; j { cout < < vect[i][j] < < ' '; } cout < < endl; } return 0; }> |
Išvestis
1 2 4 5 6 7 8 9 10
Pratimų problema: Apibrėžkite 2D vektorių su skirtingų dydžių stulpeliais.
Pavyzdžiai:
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 vektoriai dažnai traktuojami kaip matrica, kurios viduje yra eilutės ir stulpeliai. Po gaubtu jie iš tikrųjų yra 2D vektoriaus elementai.
Pirmiausia deklaruojame sveikojo skaičiaus kintamąjį, pavadintą eilutė, o tada masyvo pavadinimu stulpelis, kuriame bus kiekvienos eilutės dydžio reikšmė.
Po to pradedame inicijuoti kiekvienos eilutės atmintį pagal stulpelio dydį.
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 , vektorius |
Išvestis
1 2 3 4 5 1 2 3 1 2 3 4 1 2 1
Kitas požiūris
Tarkime, kad norime inicijuoti 2D vektorių n eilutes ir m stulpeliai, kurių vertė yra 0.
C++
Išvestis
0 0 0 0 0 0 0 0 0 0 0 0
Laiko sudėtingumas: O (N*M)
Pagalbinė erdvė: O (N*M)
Dar vienas požiūris:
Tarkime, kad norime sukurti 2D vektorių n eilutes ir m stulpelius ir įvesties reikšmes.
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 , vektorius |
Išvestis
1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8
Laiko sudėtingumas: O (N*M)
Pagalbinė erdvė: O (N*M)
Tikimės, kad paliksite šį straipsnį geriau suprasdami 2D vektorius ir būsite pakankamai įsitikinę, kad pritaikysite juos patys.