2D-vektor i C++ med brukerdefinert størrelse
En 2D-vektor er en vektor av vektoren. Som 2D-matriser kan vi deklarere og tilordne verdier til en 2D-vektor!
Forutsatt at du er kjent med en normalvektor i C++, viser vi ved hjelp av et eksempel hvordan en 2D-vektor skiller seg fra en normalvektor nedenfor:
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 { /* Element en med 2 verdier i seg. */ {1, 2}, /* Element to med 3 verdier i. */ {4, 5, 6}, /* Element tre med 4 verdier i. */ {7, 8, 9, 10} }; /* Nå skriver vi ut vektoren som vi nettopp definerte ved å bruke en enkel nestet for-løkke. */ for (int i = 0; i { for (int j = 0; j { cout < < vect[i][j] < < ' '; } cout < < endl; } return 0; }> |
I en 2D-vektor er hvert element en vektor.
Tidskompleksitet: O(1)
Hjelpeplass: 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(rad); /* På linje 21 laget vi en 2D-vektor og tildelte den en kapasitet på 'row'(i dette tilfellet 5) enheter. */ /* Nå skal vi fortsette å lage strukturen til 2D-vektoren vår ved å tilordne verdien av rader og kolonner gjennom en nestet for-løkke. */ for(int i = 0; i { /* Deklarerer størrelsen på kolonnen. */ int col = kolonne[i]; /* På 43. linje erklærer vi den i-te raden til størrelsen på kolonnen. Vi lager en normal vektor med kapasitet 'col' som i hver iterasjon av for-løkken vil definere verdiene inne i hver rad */vec[i] = vektor |
Produksjon
1 2 3 4 5 6 7 8 9
Tidskompleksitet: O(N*N)
Hjelpeplass: O(N*N)
En annen tilnærming for å få tilgang til vektorelementene:
C++
<> div> id=> 'highlighter_223295'> class> => 'syntaxhighlighter nogutter '> >'0'cellpadding='0'cellspacing='0'>> |
Produksjon
1 2 3 4 5 6 7 8 9
Tidskompleksitet: O(N*N)
Hjelpeplass: O(N*N)
I likhet med Javas taggete arrays kan hvert element i en 2D-vektor inneholde et annet antall verdier.
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 { /* Element én med 2 verdier i. */ {1, 2}, /* Element to med 3 verdier i. */ {4, 5, 6}, /* Element tre med 4 verdier i. */ {7, 8, 9, 10} }; /* Nå skriver vi ut vektoren som vi nettopp definerte ved å bruke en enkel nestet for-løkke. */ for (int i = 0; i { for (int j = 0; j { cout < < vect[i][j] < < ' '; } cout < < endl; } return 0; }> |
Produksjon
1 2 4 5 6 7 8 9 10
Treningsproblem: Definer 2D-vektoren med forskjellige størrelser på kolonner.
Eksempler:
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-vektorer blir ofte behandlet som en matrise med rader og kolonner inni den. Under panseret er de faktisk elementer av 2D-vektoren.
Vi erklærer først en heltallsvariabel kalt rad og deretter en matrise kalt kolonne som skal inneholde verdien av størrelsen på hver rad.
Etter det fortsetter vi med å initialisere minnet til hver rad etter størrelsen på kolonnen.
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 |
Produksjon
1 2 3 4 5 1 2 3 1 2 3 4 1 2 1
En annen tilnærming
Anta at vi ønsker å initialisere en 2D-vektor av n rader og m kolonner, med verdien 0.
C++
Produksjon
0 0 0 0 0 0 0 0 0 0 0 0
Tidskompleksitet: PÅ M)
Hjelpeplass: PÅ M)
Enda en tilnærming:
Anta at vi ønsker å lage en 2D-vektor av n rader og m kolonner og inngangsverdier.
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 |
Produksjon
1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8
Tidskompleksitet: PÅ M)
Hjelpeplass: PÅ M)
Vi håper du forlater denne artikkelen med en bedre forståelse av 2D-vektorer og nå er trygg nok til å bruke dem på egen hånd.