2D vektor v C++ z uporabniško določeno velikostjo
2D vektor je a vektor vektorja. Tako kot 2D nizom lahko tudi 2D vektorju deklariramo in mu dodelimo vrednosti!
Ob predpostavki, da poznate normalni vektor v C++, s pomočjo primera prikazujemo, kako se 2D vektor razlikuje od normalnega vektorja spodaj:
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 { /* Prvi element z 2 vrednostma v njem. */ {1, 2}, /* Drugi element s 3 vrednostmi v njem. */ {4, 5, 6}, /* Tretji element s 4 vrednostmi v njem. */ {7, 8, 9, 10} }; /* Sedaj natisnemo vektor, ki smo ga pravkar definirali z uporabo preproste ugnezdene zanke for. */ for (int i = 0; i { for (int j = 0; j { cout < < vect[i][j] < < ' '; } cout < < endl; } return 0; }> |
V 2D vektorju je vsak element vektor.
Časovna zapletenost: O(1)
Pomožni prostor: 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(vrstica); /* V vrstici 21 smo ustvarili 2D vektor in mu dodelili kapaciteto 'vrstice' (v tem primeru 5) enot. */ /* Zdaj bomo nadaljevali z ustvarjanjem strukture našega 2D vektorja z dodeljevanjem vrednosti vrstic in stolpcev prek ugnezdene zanke for. */ for(int i = 0; i { /* Deklaracija velikosti stolpca. */ int col = column[i]; /* V 43. vrstici deklariramo i-to vrstico na velikost stolpca. Ustvarimo običajni vektor zmogljivosti 'col', ki bo v vsaki ponovitvi zanke for definiral vrednosti znotraj vsake vrstice */ vec[i] = vektor |
Izhod
1 2 3 4 5 6 7 8 9
Časovna zapletenost: O(N*N)
Pomožni prostor: O(N*N)
Drug pristop za dostop do vektorskih elementov:
C++
<> div> id=> 'highlighter_223295'> class> => 'syntaxhighlighter nogutter '> >'0'cellpadding='0'cellspacing='0'>> |
Izhod
1 2 3 4 5 6 7 8 9
Časovna zapletenost: O(N*N)
Pomožni prostor: O(N*N)
Tako kot Javin nazobčani nizi lahko vsak element 2D vektorja vsebuje različno število vrednosti.
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 { /* Prvi element z 2 vrednostma v njem. */ {1, 2}, /* Drugi element s 3 vrednostmi v njem. */ {4, 5, 6}, /* Tretji element s 4 vrednostmi v njem. */ {7, 8, 9, 10} }; /* Sedaj natisnemo vektor, ki smo ga pravkar definirali z uporabo preproste ugnezdene zanke for. */ for (int i = 0; i { for (int j = 0; j { cout < < vect[i][j] < < ' '; } cout < < endl; } return 0; }> |
Izhod
1 2 4 5 6 7 8 9 10
Težava pri vadbi: Definirajte 2D vektor z različnimi velikostmi stolpcev.
Primeri:
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 vektorji se pogosto obravnavajo kot matrika z vrsticami in stolpci v njej. Pod pokrovom so pravzaprav elementi 2D vektorja.
Najprej deklariramo celoštevilsko spremenljivko z imenom vrstica in nato matriko z imenom stolpec, ki bo vsebovala vrednost velikosti vsake vrstice.
Po tem nadaljujemo z inicializacijo pomnilnika vsake vrstice glede na velikost stolpca.
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, vektor |
Izhod
1 2 3 4 5 1 2 3 1 2 3 4 1 2 1
Drug pristop
Recimo, da želimo inicializirati 2D vektor n vrstice in m stolpci z vrednostjo 0.
C++
Izhod
0 0 0 0 0 0 0 0 0 0 0 0
Časovna zapletenost: O(N*M)
Pomožni prostor: O(N*M)
Še en pristop:
Recimo, da želimo ustvariti 2D vektor od n vrstice in m stolpce in vnosne vrednosti.
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, vektor |
Izhod
1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8
Časovna zapletenost: O(N*M)
Pomožni prostor: O(N*M)
Upamo, da ste ta članek zapustili z boljšim razumevanjem 2D vektorjev in ste zdaj dovolj samozavestni, da jih lahko uporabite sami.