En 2D-vektor er en vektor af vektoren. Ligesom 2D-arrays kan vi deklarere og tildele værdier til en 2D-vektor!
Forudsat at du er bekendt med en normalvektor i C++, viser vi ved hjælp af et eksempel, hvordan en 2D-vektor adskiller sig 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 et med 2 værdier i. */ {1, 2}, /* Element to med 3 værdier i. */ {4, 5, 6}, /* Element tre med 4 værdier i. */ {7, 8, 9, 10} }; /* Nu udskriver vi vektoren, som vi lige har defineret ved hjælp af en simpel indlejret 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)
Hjælpeplads: 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(række); /* På linje 21 skabte vi en 2D-vektor og tildelte den en kapacitet på 'row'(i dette tilfælde 5) enheder. */ /* Nu vil vi fortsætte med at skabe strukturen af vores 2D-vektor ved at tildele værdien af rækker og kolonner gennem en indlejret for-løkke. */ for(int i = 0; i { /* Erklærer størrelsen af kolonnen. */ int col = kolonne[i]; /* På den 43. linje erklærer vi den i-te række til størrelsen af kolonnen. Vi skaber en normal vektor med kapacitet 'col', som i hver iteration af for-løkken vil definere værdierne inde i hver række */vec[i] = vektor |
>
>Produktion
1 2 3 4 5 6 7 8 9>
Tidskompleksitet: O(N*N)
Hjælpeplads: O(N*N)
En anden tilgang til at få adgang til vektorelementerne:
C++
<>div> id=>'highlighter_223295'> class>=>'syntaxhighlighter nogutter '>>'0'>> |
>
>Produktion
1 2 3 4 5 6 7 8 9>
Tidskompleksitet: O(N*N)
Hjælpeplads: O(N*N)
Ligesom Javas takkede arrays kan hvert element i en 2D-vektor indeholde et forskelligt antal værdier.
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 et med 2 værdier i. */ {1, 2}, /* Element to med 3 værdier i. */ {4, 5, 6}, /* Element tre med 4 værdier i. */ {7, 8, 9, 10} }; /* Nu udskriver vi vektoren, som vi lige har defineret ved hjælp af en simpel indlejret for-løkke. */ for (int i = 0; i { for (int j = 0; j { cout<< vect[i][j] << ' '; } cout << endl; } return 0; }> |
>
>Produktion
1 2 4 5 6 7 8 9 10>
Træningsproblem: Definer 2D-vektoren med forskellige størrelser af 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 behandles ofte som en matrix med rækker og kolonner indeni. Under hætten er de faktisk elementer i 2D-vektoren.
Vi erklærer først en heltalsvariabel med navnet række og derefter en matrix med navnet kolonne, som skal indeholde værdien af størrelsen på hver række.
Derefter fortsætter vi med at initialisere hukommelsen for hver række efter 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 |
hvordan man konverterer streng til heltal java
>
>Produktion
1 2 3 4 5 1 2 3 1 2 3 4 1 2 1>
En anden tilgang
Antag, at vi ønsker at initialisere en 2D-vektor af n rækker og m kolonner med værdien 0.
C++
>
>Produktion
0 0 0 0 0 0 0 0 0 0 0 0>
Tidskompleksitet: O(N*M)
Hjælpeplads: O(N*M)
Endnu en tilgang:
Antag, at vi ønsker at skabe en 2D-vektor af n rækker og m kolonner og inputværdier.
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>
Tidskompleksitet: O(N*M)
Hjælpeplads: O(N*M)
Vi håber, at du forlader denne artikel med en bedre forståelse af 2D-vektorer og nu er sikker nok til at anvende dem på egen hånd.