logo

2D-vektori C++:ssa käyttäjän määrittämässä koossa

2D-vektori on a vektori vektorista. Kuten 2D-taulukot, voimme ilmoittaa ja määrittää arvoja 2D-vektorille!

Olettaen, että tunnet C++:n normaalivektorin, näytämme esimerkin avulla, kuinka 2D-vektori eroaa normaalista vektorista alla:



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 { /* Elementti yksi, jossa on 2 arvoa. */ {1, 2}, /* Elementti kaksi, jossa on 3 arvoa. */ {4, 5, 6}, /* Elementti kolme, jossa on 4 arvoa. */ {7, 8, 9, 10} }; /* Nyt tulostetaan vektori, jonka juuri määritimme käyttämällä yksinkertaista sisäkkäistä silmukkaa. */ for (int i = 0; i { for (int j = 0; j { cout<< vect[i][j] << ' '; } cout << endl; } return 0; }>



>

>

2D-vektorissa jokainen elementti on vektori.

Aika monimutkaisuus: O(1)

Aputila: 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(rivi); /* Rivillä 21 loimme 2D-vektorin ja määritimme sille 'rivi'(tässä tapauksessa 5) yksikön kapasiteetin. */ /* Nyt jatkamme 2D-vektorimme rakenteen luomista määrittämällä rivien ja sarakkeiden arvot sisäkkäisen silmukan kautta. */ for(int i = 0; i { /* Sarakkeen koon ilmoittaminen. */ int col = sarake[i]; /* 43. rivillä määritetään i. rivi sarakkeen kooksi. Luomme normaalin kapasiteettivektorin 'col', joka jokaisessa for-silmukan iteraatiossa määrittää arvot jokaisen rivin sisällä */ vec[i] = vektori (sara); for(int j = 0; j { vec[i][j] = j + 1; } } /* Käytämme nyt vihdoin yksinkertaista sisäkkäistä for-silmukkaa tulostaaksemme juuri yllä luomamme 2D-vektorin. */ for(int i = 0; i { for (int j = 0; j { cout<< vec[i][j] << ' '; } cout << endl; } return 0; }>

>

>

Lähtö

1 2 3 4 5 6 7 8 9>

Aika monimutkaisuus: O(N*N)

Aputila: O(N*N)

Toinen tapa päästä käsiksi vektorielementteihin:

C++




<>div> id=>'highlighter_223295'> class>=>'syntaxhighlighter nogutter '>>'0'>>
class='comments'>/* C++-koodi havainnollistaa 2D-vektoria, jonka sisällä on elementtejä (vektoreita). */div>
class='preprocessor'>#include div>
class='preprocessor'>#include div>
class='keyword bold'>using>namespace>std; div>
class='undefined spaces'> div>
class='color1 bold'>int>main() div>
class='plain'>{ div>
class='undefined spaces'>>/* Alla alustamme 2D-vektorin nimeltä 'vect' rivillä 12 ja sitten määritämme arvot rivillä 14, 15 ja 16. */div>
class='undefined spaces'> div>
class='undefined spaces'>>vectorclass='color1 bold'>intclass='plain'>>> vect div>
class='undefined spaces'>>{ div>
class='undefined spaces'>>{1, 2, 3}, div>
class='undefined spaces'>>{4, 5, 6}, div>
class='undefined spaces'>>{7, 8, 9} div>
class='undefined spaces'>>}; div>
class='undefined spaces'> div>
class='undefined spaces'>>/* Nyt tulostetaan arvot, jotka juuri julistimme riveille 14, 15 ja 16 käyttämällä yksinkertaista sisäkkäistä for-silmukkaa iteraattorin avulla. */div>
class='undefined spaces'> div>
class='undefined spaces'>>/* vector vect Voimme jakaa tämän ilmoituksen kahteen osaan, mikä auttaa meitä ymmärtämään alla olevia käsitteitä. 1. vektori on 2D-vektori, joka koostuu useista tyyppivektorin elementeistä. 2. vektori on 1D-vektori, joka koostuu useista int-tiedoista. Joten voimme käyttää STL:n tarjoamaa iteraattoria silmukassa käytetyn i,j-muuttujan sijaan. Se voi vähentää virhettä, joka voi tapahtua wrt i, j -operaatioille (i++, j++) Alla olevassa koodissa käytämme iteraattoria päästäksemme vektorielementteihin. 1. Saamme vektorin tyyppiset vect1D-vektorit 2D-vektorivektorista. 2. Saamme int-elementtejä x:ään vektorivektorista 1D-vektori. */div>
class='undefined spaces'> div>
class='undefined spaces'>>for>(vektoriintclass='plain'>> vect1D : vect) div>
class='undefined spaces'>>{ div>
class='undefined spaces'>>for>(class='color1 bold'>int>x : vect1D) div>
class='undefined spaces'>>{ div>
class='undefined spaces'>>cout<< x <<>' 'class='plain'>; div>
class='undefined spaces'>>} div>
class='undefined spaces'>>cout<< endl; div>
class='undefined spaces'>>} div>
class='undefined spaces'> div>
class='undefined spaces'>>return>0; div>
class='plain'>} div>div>div>>

>

>

Lähtö

1 2 3 4 5 6 7 8 9>

Aika monimutkaisuus: O(N*N)

Aputila: O(N*N)

Kuten Javan rosoiset taulukot, jokainen 2D-vektorin elementti voi sisältää eri määrän arvoja.

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 { /* Elementti yksi, jossa on 2 arvoa. */ {1, 2}, /* Elementti kaksi, jossa on 3 arvoa. */ {4, 5, 6}, /* Elementti kolme, jossa on 4 arvoa. */ {7, 8, 9, 10} }; /* Nyt tulostetaan vektori, jonka juuri määritimme käyttämällä yksinkertaista sisäkkäistä silmukkaa. */ for (int i = 0; i { for (int j = 0; j { cout<< vect[i][j] << ' '; } cout << endl; } return 0; }>

>

>

Lähtö

1 2 4 5 6 7 8 9 10>

Harjoitusongelma: Määrittele 2D-vektori erikokoisilla sarakkeilla.
Esimerkkejä:

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-vektoreita käsitellään usein matriisina, jonka sisällä on rivejä ja sarakkeita. Konepellin alla ne ovat itse asiassa 2D-vektorin elementtejä.
Ilmoitamme ensin kokonaislukumuuttujan nimeltä rivi ja sitten taulukon nimeltä sarake, joka sisältää kunkin rivin koon arvon.

Tämän jälkeen aloitamme jokaisen rivin muistin sarakkeen koon mukaan.

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 , vektori (m)); for(int i = 0; i { for(int j = 0; j { vec[i][j] = j + i + 1; } } for(int i = 0; i { for(int j = 0; j { cout<< vec[i][j] << ' '; } cout << endl; } return 0; }>

muuntaa merkkijono in java
>

>

Lähtö

1 2 3 4 5 1 2 3 1 2 3 4 1 2 1>

Toinen lähestymistapa
Oletetaan, että haluamme alustaa 2D-vektorin n rivit ja m sarakkeita, joiden arvo on 0.

C++




>

>

Lähtö

0 0 0 0 0 0 0 0 0 0 0 0>

Aika monimutkaisuus: O(N*M)

Aputila: O(N*M)

Toinen lähestymistapa:
Oletetaan, että haluamme luoda 2D-vektorin n rivit ja m sarakkeet ja syöttöarvot.

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 , vektori (m)); for(int i = 0; i { for(int j = 0; j { vec[i][j] = j + i + 1; } } for(int i = 0; i { for(int j = 0; j { cout<< vec[i][j] << ' '; } cout << endl; } return 0; }>

>

>

Lähtö

1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8>

Aika monimutkaisuus: O(N*M)

Aputila: O(N*M)

Toivomme, että jätät tämän artikkelin ymmärtämään paremmin 2D-vektoreita ja olet nyt tarpeeksi itsevarma soveltaaksesi niitä itse.