Een 2D-vector is a vector van de vector. Net als bij 2D-arrays kunnen we waarden declareren en toewijzen aan een 2D-vector!
Ervan uitgaande dat u bekend bent met een normaalvector in C++, laten we met behulp van een voorbeeld hieronder zien hoe een 2D-vector verschilt van een normaalvector:
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 met twee waarden erin. */ {1, 2}, /* Element twee met 3 waarden erin. */ {4, 5, 6}, /* Element drie met 4 waarden erin. */ {7, 8, 9, 10} }; /* Nu drukken we de vector af die we zojuist hebben gedefinieerd met behulp van een eenvoudige geneste for-lus. */ voor (int i = 0; i { voor (int j = 0; j { cout<< vect[i][j] << ' '; } cout << endl; } return 0; }> |
>
>
In een 2D-vector is elk element een vector.
Tijdcomplexiteit: O(1)
Hulpruimte: 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(rij); /* Op regel 21 hebben we een 2D-vector gemaakt en deze een capaciteit van 'rij' (in dit geval 5) eenheden toegewezen. */ /* Nu gaan we verder met het creëren van de structuur van onze 2D-vector door de waarde van rijen en kolommen toe te wijzen via een geneste for-lus. */ for(int i = 0; i { /* De grootte van de kolom declareren. */ int col = kolom[i]; /* Op de 43e regel declareren we de i-de rij tot de grootte van de kolom. We creëren een normale capaciteitsvector 'col' die in elke iteratie van de for-lus de waarden binnen elke rij zal definiëren */ vec[i] = vector |
>
>Uitvoer
1 2 3 4 5 6 7 8 9>
Tijdcomplexiteit: O(N*N)
Hulpruimte: O(N*N)
Een andere benadering om toegang te krijgen tot de vectorelementen:
C++
<>div> id=>'highlighter_223295'> class>=>'syntaxhighlighter nogutter '>>'0'>> |
>
>Uitvoer
1 2 3 4 5 6 7 8 9>
Tijdcomplexiteit: O(N*N)
Hulpruimte: O(N*N)
Net als de gekartelde arrays van Java kan elk element van een 2D-vector een ander aantal waarden bevatten.
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 met twee waarden erin. */ {1, 2}, /* Element twee met 3 waarden erin. */ {4, 5, 6}, /* Element drie met 4 waarden erin. */ {7, 8, 9, 10} }; /* Nu drukken we de vector af die we zojuist hebben gedefinieerd met behulp van een eenvoudige geneste for-lus. */ voor (int i = 0; i { voor (int j = 0; j { cout<< vect[i][j] << ' '; } cout << endl; } return 0; }> |
>
>Uitvoer
1 2 4 5 6 7 8 9 10>
Oefeningsprobleem: Definieer de 2D-vector met kolommen van verschillende grootte.
Voorbeelden:
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-vectoren worden vaak behandeld als een matrix met rijen en kolommen erin. Onder de motorkap zijn het eigenlijk elementen van de 2D-vector.
We declareren eerst een integer-variabele met de naam rij en vervolgens een array met de naam kolom die de waarde van de grootte van elke rij zal bevatten.
Daarna gaan we verder met het initialiseren van het geheugen van elke rij op basis van de kolomgrootte.
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 , vector |
lezen uit een csv-bestand in Java
>
>Uitvoer
1 2 3 4 5 1 2 3 1 2 3 4 1 2 1>
Een andere aanpak
Stel dat we een 2D-vector willen initialiseren N rijen en M kolommen, met een waarde 0.
C++
>
>Uitvoer
0 0 0 0 0 0 0 0 0 0 0 0>
Tijdcomplexiteit: O(N*M)
Hulpruimte: O(N*M)
Nog een andere aanpak:
Stel dat we een 2D-vector willen maken van N rijen en M kolommen en invoerwaarden.
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 , vector |
>
>Uitvoer
1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8>
Tijdcomplexiteit: O(N*M)
Hulpruimte: O(N*M)
We hopen dat u dit artikel verlaat met een beter begrip van 2D-vectoren en dat u nu voldoende zelfvertrouwen heeft om ze zelf toe te passen.