logo

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 (col.); for(int j = 0; j { vec[i][j] = j + 1; } } /* Dabar pagaliau naudojame paprastą įdėtą for kilpą, kad išspausdintume 2D vektorių, kurį ką tik sukūrėme aukščiau. */ for(int i = 0; i { už (int j = 0; j { cout<< vec[i][j] << ' '; } cout << endl; } return 0; }>

>

>

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'>>
class='comments'>/* C++ kodas, skirtas parodyti 2D vektorių su elementais (vektoriais) jame. */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='paprastas'>{ div>
class='undefined spaces'>>/* Žemiau inicijuojame 2D vektorių pavadinimu 'vect' 12 eilutėje ir atitinkamai deklaruojame reikšmes 14, 15 ir 16 eilutėse. */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'>>/* Dabar atspausdiname reikšmes, kurias ką tik paskelbėme 14, 15 ir 16 eilutėse, naudodami paprastą įdėtą kilpą iteratoriaus pagalba. */div>
class='undefined spaces'> div>
class='undefined spaces'>>/* vektorinis vektorius Šią deklaraciją galime padalyti į dvi dalis, kurios padės suprasti toliau pateiktas sąvokas. 1. vektorius yra 2D vektorius, susidedantis iš kelių vektoriaus tipo elementų. 2. vektorius yra 1D vektorius, susidedantis iš kelių int duomenų. Taigi galime naudoti STL pateiktą iteratorių, o ne i,j kintamąjį, naudojamą cikle. Tai gali sumažinti klaidą, kuri gali atsitikti i, j operacijoms (i++, j++) Žemiau esančiame kode mes naudojame iteratorių, kad pasiektume vektorinius elementus. 1. Iš 2D vektoriaus vektoriaus gauname vektor1D tipo vektorius. 2. Iš vektorinio vektoriaus 1D vektoriaus gauname int elementus į x. */div>
class='undefined spaces'> div>
class='undefined spaces'>>for>(vektoriusintclass='paprastas'>> 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='paprastas'>; 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>>

>

>

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 (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; }>

blokuoti skelbimus youtube android
>

>

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 (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; }>

>

>

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.