Vektorit ovat samat kuin dynaamiset taulukot, joilla on mahdollisuus muuttaa itsensä kokoa automaattisesti, kun elementti lisätään tai poistetaan, ja säilö käsittelee niiden tallennuksen automaattisesti.
Tyhjä()-funktiota käytetään tarkistamaan, onko vektorisäiliö tyhjä vai ei.
Syntaksi :
vectorname .empty() Parameters : No parameters are passed. Returns : True, if vector is empty False, Otherwise>
Esimerkkejä:
Input : myvector = 1, 2, 3, 4, 5 myvector.empty(); Output : False Input : myvector = {} myvector.empty(); Output : True>
Aika monimutkaisuus - Vakio O(1)
Virheet ja poikkeukset
1. Sillä ei ole poikkeusta heittoakuuta.
2. Näyttää virheilmoituksen, kun parametri välitetään.
CPP
// CPP program to illustrate> // Implementation of empty() function> #include> #include> using> namespace> std;> int> main()> {> > vector<> int> >oma vektori{};> > if> (myvector.empty())> > {> > cout <<> 'True'> ;> > }> > else> {> > cout <<> 'False'> ;> > }> > return> 0;> }> |
>
>
e r malliesimerkkejäLähtö
True>
Sovellus:
Kun annetaan luettelo kokonaisluvuista, etsi kaikkien kokonaislukujen summa.
Input : 1, 5, 6, 3, 9, 2 Output : 26 Explanation - 1+5+6+3+9+2 = 26>
Algoritmi
1. Tarkista, onko vektori tyhjä, jos ei, lisää back-elementti muuttujaan, joka on alustettu 0:ksi, ja pop back-elementti.
2. Toista tämä vaihe, kunnes vektori on tyhjä.
3. Tulosta muuttujan lopullinen arvo.
CPP
// CPP program to illustrate> // Application of empty() function> #include> #include> using> namespace> std;> int> main()> {> > int> sum = 0;> > vector<> int> >myvektori{ 1, 5, 6, 3, 9, 2 };> > while> (!myvector.empty())> > {> > sum = sum + myvector.back();> > myvector.pop_back();> > }> > cout << sum;> > return> 0;> }> |
>
>Lähtö
26>vektori::koko()
size()-funktiota käytetään palauttamaan vektorisäiliön koko tai elementtien lukumäärä vektorisäiliössä.
Syntaksi :
vectorname .size() Parameters : No parameters are passed. Returns : Number of elements in the container.>
Esimerkkejä:
Input : myvector = 1, 2, 3, 4, 5 myvector.size(); Output : 5 Input : myvector = {} myvector.size(); Output : 0>
Aika monimutkaisuus – Vakio O(1)
Virheet ja poikkeukset
1. Sillä ei ole poikkeusta heittotakuu.
2. Näyttää virheilmoituksen, kun parametri välitetään.
CPP
// CPP program to illustrate> // Implementation of size() function> #include> #include> using> namespace> std;> int> main()> {> > vector<> int> >myvektori{ 1, 2, 3, 4, 5 };> > cout << myvector.size();> > return> 0;> }> |
>
>Lähtö
5>
Miksi tyhjä() on parempi kuin koko()
Tyhjä()-funktion sanotaan usein olevan parempi kuin size()-funktion, johtuen joistakin näistä kohdista-
- tyhjä()-funktio ei käytä vertailuoperaattoreita , joten sitä on mukavampi käyttää
- tyhjä()-funktio on toteutetaan jatkuvassa ajassa , säiliötyypistä riippumatta, kun taas jotkin size()-funktion toteutukset vaativat O(n)-aikamonimutkaisuutta, kuten list::size().
Sovellus:
Kun annetaan luettelo kokonaisluvuista, etsi kaikkien kokonaislukujen summa.
Input : 1, 5, 6, 3, 9, 2 Output : 26 Explanation - 1+5+6+3+9+2 = 26>
Algoritmi
1. Tarkista onko vektorin koko 0, jos ei, lisää back-elementti muuttujaan, joka on alustettu 0:ksi, ja pop-elementti.
2. Toista tämä vaihe, kunnes vektorin kooksi tulee 0.
3. Tulosta muuttujan lopullinen arvo.
CPP
// CPP program to illustrate> // Application of size() function> #include> #include> using> namespace> std;> int> main()> {> > int> sum = 0;> > vector<> int> >myvektori{ 1, 5, 6, 3, 9, 2 };> > while> (myvector.size()>0) {> > sum = sum + myvector.back();> > myvector.pop_back();> > }> > cout << sum;> > return> 0;> }> |
mikä on monitori
>
>Lähtö
26>
Meidän tulee olla varovaisia käyttäessämme kokoa().
Harkitse esimerkiksi seuraavaa ohjelmaa:
C++
#include> using> namespace> std;> int> main()> {> > // Initializing a vector of string type> > vector vec = {> 'Geeks'> ,> 'For'> ,> 'Geeks'> };> > for> (> int> i = 0 ; i <= vec.size() - 1 ; i++)> > cout << vec[i] <<> ' '> ;> > return> 0;> }> |
>
>Lähtö
Geeks For Geeks>
Yllä oleva ohjelma toimii hyvin, mutta tarkastellaan nyt seuraavaa ohjelmaa:
C++
#include> using> namespace> std;> int> main()> {> > // Initializing a vector of string type> > vector vec = {> 'Geeks'> ,> 'For'> ,> 'Geeks'> };> > vec.clear();> > for> (> int> i = 0; i <= vec.size() - 1; i++)> > cout << vec[i] <<> ' '> ;> > cout <<> 'Geeks For Geeks'> ;> > return> 0;> }> |
>
prioriteettijono java
>
Lähtö:
Segmentointivika SIGEGV
Kääntämällä yllä olevan ohjelman saamme segmentointivirheen (SIGSEGV), koska size():n palautustyyppi on size_t, joka on alias unsigned long int.-> unsigned long int var = 0;-> cout
joten olemme silmukassa i = 0:sta i = 18446744073709551615:een yllä olevassa ohjelmassa
Harkitse nyt skenaariota, jossa poistamme elementtejä alustetusta säilöstämme ja toimintosarjan jälkeen säiliömme tyhjenee ja lopuksi tulostamme säilömme sisällön yllä olevalla menetelmällä. Se johtaa varmasti segmentointivirheeseen (SIGSEGV).
Kuinka korjata se?
On suositeltavaa kirjoittaa container.size() kokonaislukutyyppiin segmentointivian (SIGSEGV) välttämiseksi.
C++
#include> using> namespace> std;> int> main()> {> > // Initializing a vector of string type> > vector vec = {> 'Geeks'> ,> 'For'> ,> 'Geeks'> };> > > // Clearing the vector> > // Now size is equal to 0> > vec.clear();> > > // Typecasting vec.size() to int> > for> (> int> i = 0; i <(> int> )vec.size() - 1; i++)> > cout << vec[i] <<> ' '> ;> > cout <<> 'Geeks For Geeks'> ;> > return> 0;> }> // This code is contributed by Bhuwanesh Nainwal> |
>
>Lähtö
Geeks For Geeks>