Vectoren zijn hetzelfde als dynamische arrays met de mogelijkheid om het formaat automatisch aan te passen wanneer een element wordt ingevoegd of verwijderd, waarbij hun opslag automatisch door de container wordt afgehandeld.
De functie empty() wordt gebruikt om te controleren of de vectorcontainer leeg is of niet.
Syntaxis:
vectorname .empty() Parameters : No parameters are passed. Returns : True, if vector is empty False, Otherwise>
Voorbeelden:
Input : myvector = 1, 2, 3, 4, 5 myvector.empty(); Output : False Input : myvector = {} myvector.empty(); Output : True>
Tijdcomplexiteit – Constante O(1)
Fouten en uitzonderingen
1. Het heeft een werpgarantie zonder uitzondering.
2. Geeft een fout weer wanneer een parameter wordt doorgegeven.
CPP
// CPP program to illustrate> // Implementation of empty() function> #include> #include> using> namespace> std;> int> main()> {> > vector<> int> >mijnvector{};> > if> (myvector.empty())> > {> > cout <<> 'True'> ;> > }> > else> {> > cout <<> 'False'> ;> > }> > return> 0;> }> |
>
>Uitvoer
True>
Sollicitatie :
Gegeven een lijst met gehele getallen, zoek de som van alle gehele getallen.
Hoe geblokkeerde nummers op Android te vinden
Input : 1, 5, 6, 3, 9, 2 Output : 26 Explanation - 1+5+6+3+9+2 = 26>
Algoritme
1. Controleer of de vector leeg is, zo niet, voeg dan het back-element toe aan een variabele die is geïnitialiseerd als 0, en pop het back-element.
2. Herhaal deze stap totdat de vector leeg is.
3. Druk de uiteindelijke waarde van de variabele af.
CPP
// CPP program to illustrate> // Application of empty() function> #include> #include> using> namespace> std;> int> main()> {> > int> sum = 0;> > vector<> int> >mijnvector{ 1, 5, 6, 3, 9, 2 };> > while> (!myvector.empty())> > {> > sum = sum + myvector.back();> > myvector.pop_back();> > }> > cout << sum;> > return> 0;> }> |
>
>Uitvoer
26>vector::grootte()
size() functie wordt gebruikt om de grootte van de vectorcontainer of het aantal elementen in de vectorcontainer te retourneren.
Syntaxis:
vectorname .size() Parameters : No parameters are passed. Returns : Number of elements in the container.>
Voorbeelden:
Input : myvector = 1, 2, 3, 4, 5 myvector.size(); Output : 5 Input : myvector = {} myvector.size(); Output : 0>
Tijdcomplexiteit – Constante O(1)
Fouten en uitzonderingen
1. Het heeft een werpgarantie zonder uitzondering.
2. Geeft een fout weer wanneer een parameter wordt doorgegeven.
CPP
// CPP program to illustrate> // Implementation of size() function> #include> #include> using> namespace> std;> int> main()> {> > vector<> int> >mijnvector{ 1, 2, 3, 4, 5 };> > cout << myvector.size();> > return> 0;> }> |
>
>Uitvoer
5>
Waarom heeft empty() de voorkeur boven size()
Er wordt vaak gezegd dat de functie empty() de voorkeur heeft boven de functie size() vanwege enkele van deze punten:
- functie leeg(). maakt geen gebruik van vergelijkingsoperatoren , dus het is handiger in gebruik
- functie leeg() is in constante tijd geïmplementeerd , ongeacht het containertype, terwijl sommige implementaties van de functie size() O(n) tijdcomplexiteit vereisen, zoals list::size().
Sollicitatie :
Gegeven een lijst met gehele getallen, zoek de som van alle gehele getallen.
Input : 1, 5, 6, 3, 9, 2 Output : 26 Explanation - 1+5+6+3+9+2 = 26>
Algoritme
1. Controleer of de grootte van de vector 0 is. Zo niet, voeg dan het back-element toe aan een variabele die is geïnitialiseerd als 0, en laat het back-element los.
2. Herhaal deze stap totdat de grootte van de vector 0 wordt.
3. Druk de uiteindelijke waarde van de variabele af.
CPP
// CPP program to illustrate> // Application of size() function> #include> #include> using> namespace> std;> int> main()> {> > int> sum = 0;> > vector<> int> >mijnvector{ 1, 5, 6, 3, 9, 2 };> > while> (myvector.size()>0) {> > sum = sum + myvector.back();> > myvector.pop_back();> > }> > cout << sum;> > return> 0;> }> |
>
>Uitvoer
26>
We moeten voorzichtig zijn bij het gebruik van size().
Neem bijvoorbeeld het volgende programma:
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;> }> |
>
tekenreeks invoeren in Java
>Uitvoer
Geeks For Geeks>
Het bovenstaande programma werkt prima, maar laten we nu eens kijken naar het volgende programma:
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;> }> |
>
>
Uitgang:
Segmentatiefout SIGEGV
Door het bovenstaande programma te compileren, krijgen we Segmentation Fault (SIGSEGV) omdat het retourtype size() size_t is, wat een alias is voor unsigned long int. -> unsigned long int var = 0;-> cout
dus we lopen van i = 0 naar i = 18446744073709551615 in het bovenstaande programma
Beschouw nu het scenario waarin we elementen uit onze geïnitialiseerde container verwijderen en na een reeks bewerkingen onze container leeg raakt en ten slotte de inhoud van onze container afdrukken met behulp van de bovenstaande methode. Het zal zeker leiden tot Segmentation Fault (SIGSEGV).
Hoe herstel je het?
Het is raadzaam om container.size() te typeren naar een geheel getal om Segmentation Fault (SIGSEGV) te voorkomen.
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> |
>
>Uitvoer
Geeks For Geeks>