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'>> |
>
>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 |
sql rekkefølge etter dato
>
>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.