En 2D-vektor är en vektor av vektorn. Liksom 2D-matriser kan vi deklarera och tilldela värden till en 2D-vektor!
Förutsatt att du är bekant med en normalvektor i C++ visar vi med hjälp av ett exempel hur en 2D-vektor skiljer sig från en normalvektor nedan:
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 ett med 2 värden i sig. */ {1, 2}, /* Element två med 3 värden i. */ {4, 5, 6}, /* Element tre med 4 värden i. */ {7, 8, 9, 10} }; /* Nu skriver vi ut vektorn som vi just definierat med en enkel kapslad för-loop. */ för (int i = 0; i { för (int j = 0; j { cout<< vect[i][j] << ' '; } cout << endl; } return 0; }> |
>
>
I en 2D-vektor är varje element en vektor.
Tidskomplexitet: O(1)
Hjälputrymme: 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å rad 21 skapade vi en 2D-vektor och tilldelade den en kapacitet på 'rad'(i detta fall 5) enheter. */ /* Nu kommer vi att fortsätta att skapa strukturen för vår 2D-vektor genom att tilldela värdet på rader och kolumner genom en kapslad för-loop. */ for(int i = 0; i { /* Deklarerar storleken på kolumnen. */ int col = kolumn[i]; /* På den 43:e raden deklarerar vi den i:te raden till storleken på kolumnen. Vi skapar en normal vektor med kapacitet 'col' som i varje iteration av for-slingan kommer att definiera värdena inuti varje rad */vec[i] = vektor |
>
>Produktion
1 2 3 4 5 6 7 8 9>
Tidskomplexitet: O(N*N)
Hjälputrymme: O(N*N)
Ett annat sätt att komma åt vektorelementen:
C++
<>div> id=>'highlighter_223295'> class>=>'syntaxhighlighter nogutter '>>'0'>> |
>
>Produktion
1 2 3 4 5 6 7 8 9>
Tidskomplexitet: O(N*N)
Hjälputrymme: O(N*N)
Liksom Javas taggiga arrayer kan varje element i en 2D-vektor innehålla ett annat antal värden.
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 ett med 2 värden i sig. */ {1, 2}, /* Element två med 3 värden i. */ {4, 5, 6}, /* Element tre med 4 värden i. */ {7, 8, 9, 10} }; /* Nu skriver vi ut vektorn som vi just definierat med en enkel kapslad för-loop. */ för (int i = 0; i { för (int j = 0; j { cout<< vect[i][j] << ' '; } cout << endl; } return 0; }> |
>
>Produktion
1 2 4 5 6 7 8 9 10>
Träningsproblem: Definiera 2D-vektorn med olika storlekar på kolumner.
Exempel:
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 behandlas ofta som en matris med rader och kolumner inuti. Under huven är de faktiskt delar av 2D-vektorn.
Vi deklarerar först en heltalsvariabel med namnet rad och sedan en array med namnet kolumn som kommer att hålla värdet på storleken på varje rad.
Efter det fortsätter vi att initialisera minnet för varje rad med storleken på kolumnen.
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 |
rad autocad kommando
>
>Produktion
1 2 3 4 5 1 2 3 1 2 3 4 1 2 1>
Ett annat tillvägagångssätt
Antag att vi vill initiera en 2D-vektor av n rader och m kolumner, med värdet 0.
C++
>
>Produktion
0 0 0 0 0 0 0 0 0 0 0 0>
Tidskomplexitet: PÅ M)
Hjälputrymme: PÅ M)
Ännu ett tillvägagångssätt:
Anta att vi vill skapa en 2D-vektor av n rader och m kolumner och ingångsvärden.
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 |
>
>Produktion
1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8>
Tidskomplexitet: PÅ M)
Hjälputrymme: PÅ M)
Vi hoppas att du lämnar den här artikeln med en bättre förståelse för 2D-vektorer och att du nu är säker nog att använda dem på egen hand.