Vektorji so enaki kot dinamični nizi z možnostjo samodejnega spreminjanja velikosti, ko je element vstavljen ali izbrisan, pri čemer njihovo shranjevanje samodejno obravnava vsebnik.
Funkcija empty() se uporablja za preverjanje, ali je vektorski vsebnik prazen ali ne.
Sintaksa:
vectorname .empty() Parameters : No parameters are passed. Returns : True, if vector is empty False, Otherwise>
Primeri:
Input : myvector = 1, 2, 3, 4, 5 myvector.empty(); Output : False Input : myvector = {} myvector.empty(); Output : True>
Časovna zapletenost – Konstanta O(1)
Napake in izjeme
1. Nima nobene izjeme vrže garancije.
2. Prikaže napako, ko je parameter posredovan.
CPP
// CPP program to illustrate> // Implementation of empty() function> #include> #include> using> namespace> std;> int> main()> {> > vector<> int> >mojvektor{};> > if> (myvector.empty())> > {> > cout <<> 'True'> ;> > }> > else> {> > cout <<> 'False'> ;> > }> > return> 0;> }> |
niz kot niz
>
>Izhod
True>
Uporaba:
Podan je seznam celih števil, poiščite vsoto vseh celih števil.
Input : 1, 5, 6, 3, 9, 2 Output : 26 Explanation - 1+5+6+3+9+2 = 26>
Algoritem
1. Preverite, ali je vektor prazen, če ni, dodajte zadnji element spremenljivki, inicializirani kot 0, in izpnite zadnji element.
2. Ta korak ponavljajte, dokler vektor ni prazen.
3. Natisnite končno vrednost spremenljivke.
CPP
// CPP program to illustrate> // Application of empty() function> #include> #include> using> namespace> std;> int> main()> {> > int> sum = 0;> > vector<> int> >mojvektor{ 1, 5, 6, 3, 9, 2 };> > while> (!myvector.empty())> > {> > sum = sum + myvector.back();> > myvector.pop_back();> > }> > cout << sum;> > return> 0;> }> |
>
>Izhod
26>vektor::velikost()
funkcija size() se uporablja za vrnitev velikosti vektorskega vsebnika ali števila elementov v vektorskem vsebniku.
Sintaksa:
vectorname .size() Parameters : No parameters are passed. Returns : Number of elements in the container.>
Primeri:
Input : myvector = 1, 2, 3, 4, 5 myvector.size(); Output : 5 Input : myvector = {} myvector.size(); Output : 0>
Časovna zapletenost – Konstanta O(1)
Napake in izjeme
1. Nima nobene izjeme vrže garancije.
2. Prikaže napako, ko je parameter posredovan.
CPP
// CPP program to illustrate> // Implementation of size() function> #include> #include> using> namespace> std;> int> main()> {> > vector<> int> >mojvektor{ 1, 2, 3, 4, 5 };> > cout << myvector.size();> > return> 0;> }> |
>
>Izhod
5>
Zakaj ima empty() prednost pred size()
za funkcijo empty() pogosto pravijo, da ima prednost pred funkcijo size() zaradi nekaterih od teh točk-
sončna deol starost
- funkcija empty(). ne uporablja primerjalnih operatorjev , zato je bolj priročen za uporabo
- funkcija empty() je izvajati v konstantnem času , ne glede na vrsto vsebnika, medtem ko nekatere izvedbe funkcije size() zahtevajo O(n) časovno zapletenost, kot je list::size().
Uporaba:
Podan je seznam celih števil, poiščite vsoto vseh celih števil.
Input : 1, 5, 6, 3, 9, 2 Output : 26 Explanation - 1+5+6+3+9+2 = 26>
Algoritem
1. Preverite, ali je velikost vektorja 0, če ni, dodajte zadnji element spremenljivki, inicializirani kot 0, in odstranite zadnji element.
2. Ponavljajte ta korak, dokler velikost vektorja ne postane 0.
3. Natisnite končno vrednost spremenljivke.
CPP
// CPP program to illustrate> // Application of size() function> #include> #include> using> namespace> std;> int> main()> {> > int> sum = 0;> > vector<> int> >mojvektor{ 1, 5, 6, 3, 9, 2 };> > while> (myvector.size()>0) {> > sum = sum + myvector.back();> > myvector.pop_back();> > }> > cout << sum;> > return> 0;> }> |
>
>Izhod
26>
Pri uporabi size() moramo biti previdni.
Na primer, razmislite o naslednjem programu:
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;> }> |
>
>Izhod
Geeks For Geeks>
Zgornji program deluje dobro, zdaj pa razmislimo o naslednjem programu:
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;> }> |
>
seznam programov python
>
Izhod:
Napaka segmentacije SIGEGV
S prevajanjem zgornjega programa dobimo Segmentation Fault (SIGSEGV), ker je povratni tip size() size_t, ki je vzdevek za unsigned long int.-> unsigned long int var = 0;-> cout
tako se v zgornjem programu vrtimo od i = 0 do i = 18446744073709551615
Zdaj razmislite o scenariju, kjer izbrišemo elemente iz našega inicializiranega vsebnika in po zaporedju operacij naš vsebnik postane prazen in nazadnje natisnemo vsebino našega vsebnika z uporabo zgornje metode. Vsekakor bo povzročilo napako segmentacije (SIGSEGV).
Kako to popraviti?
Priporočljivo je, da container.size() pretvorite v celoštevilski tip, da se izognete napaki segmentacije (SIGSEGV).
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> |
>
>Izhod
Geeks For Geeks>