Vektorer är samma som dynamiska arrayer med möjligheten att ändra storlek på sig själva automatiskt när ett element infogas eller tas bort, och deras lagring hanteras automatiskt av behållaren.
Funktionen empty() används för att kontrollera om vektorbehållaren är tom eller inte.
Syntax :
vectorname .empty() Parameters : No parameters are passed. Returns : True, if vector is empty False, Otherwise>
Exempel:
Input : myvector = 1, 2, 3, 4, 5 myvector.empty(); Output : False Input : myvector = {} myvector.empty(); Output : True>
Tidskomplexitet – Konstant O(1)
Fel och undantag
1. Den har en kastgaranti utan undantag.
2. Visar fel när en parameter skickas.
CPP
// CPP program to illustrate> // Implementation of empty() function> #include> #include> using> namespace> std;> int> main()> {> > vector<> int> >myvektor{};> > if> (myvector.empty())> > {> > cout <<> 'True'> ;> > }> > else> {> > cout <<> 'False'> ;> > }> > return> 0;> }> |
>
>Produktion
True>
Ansökan :
Med en lista över heltal, hitta summan av alla heltal.
Input : 1, 5, 6, 3, 9, 2 Output : 26 Explanation - 1+5+6+3+9+2 = 26>
Algoritm
1. Kontrollera om vektorn är tom, om inte, lägg till bakelementet till en variabel initierad som 0, och tryck tillbaka elementet.
2. Upprepa detta steg tills vektorn är tom.
3. Skriv ut det slutliga värdet för variabeln.
CPP
// CPP program to illustrate> // Application of empty() function> #include> #include> using> namespace> std;> int> main()> {> > int> sum = 0;> > vector<> int> >myvektor{ 1, 5, 6, 3, 9, 2 };> > while> (!myvector.empty())> > {> > sum = sum + myvector.back();> > myvector.pop_back();> > }> > cout << sum;> > return> 0;> }> |
>
>Produktion
26>vector::size()
funktionen size() används för att returnera storleken på vektorbehållaren eller antalet element i vektorbehållaren.
Syntax :
vectorname .size() Parameters : No parameters are passed. Returns : Number of elements in the container.>
Exempel:
Input : myvector = 1, 2, 3, 4, 5 myvector.size(); Output : 5 Input : myvector = {} myvector.size(); Output : 0>
Tidskomplexitet – Konstant O(1)
Fel och undantag
1. Den har en kastgaranti utan undantag.
2. Visar fel när en parameter skickas.
CPP
sträng till heltal java
// CPP program to illustrate> // Implementation of size() function> #include> #include> using> namespace> std;> int> main()> {> > vector<> int> >myvektor{ 1, 2, 3, 4, 5 };> > cout << myvector.size();> > return> 0;> }> |
>
>Produktion
5>
Varför föredras empty() framför size()
funktionen empty() sägs ofta vara att föredra framför funktionen size() på grund av några av dessa punkter-
- empty() funktion använder inga jämförelseoperatorer , så det är bekvämare att använda
- empty() funktionen är implementeras i konstant tid , oavsett behållartyp, medan vissa implementeringar av funktionen size() kräver O(n) tidskomplexitet som list::size().
Ansökan :
Med en lista över heltal, hitta summan av alla heltal.
Input : 1, 5, 6, 3, 9, 2 Output : 26 Explanation - 1+5+6+3+9+2 = 26>
Algoritm
1. Kontrollera om storleken på vektorn är 0, om inte, lägg till bakelementet till en variabel initierad som 0, och tryck tillbaka elementet.
2. Upprepa detta steg tills storleken på vektorn blir 0.
3. Skriv ut det slutliga värdet för variabeln.
CPP
// CPP program to illustrate> // Application of size() function> #include> #include> using> namespace> std;> int> main()> {> > int> sum = 0;> > vector<> int> >myvektor{ 1, 5, 6, 3, 9, 2 };> > while> (myvector.size()>0) {> > sum = sum + myvector.back();> > myvector.pop_back();> > }> > cout << sum;> > return> 0;> }> |
>
>Produktion
26>
Vi måste vara försiktiga när vi använder size().
Tänk till exempel på följande program:
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;> }> |
>
>Produktion
Geeks For Geeks>
Ovanstående program fungerar bra men låt oss nu överväga följande program:
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;> }> |
string.format i java
>
>
Produktion:
Segmenteringsfel SIGEGV
Genom att kompilera programmet ovan får vi Segmentation Fault (SIGSEGV) eftersom returtypen för size() är size_t som är ett alias för unsigned long int.-> unsigned long int var = 0;-> cout
så vi går från i = 0 till i = 18446744073709551615 i programmet ovan
Tänk nu på scenariot där vi tar bort element från vår initierade behållare och efter en sekvens av operationer blir vår behållare tom och slutligen skriver vi ut innehållet i vår behållare med metoden ovan. Definitivt kommer det att leda till segmenteringsfel (SIGSEGV).
Hur fixar man det?
Det är tillrådligt att typcasta container.size() till heltalstyp för att undvika Segmentation Fault (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> |
>
>Produktion
Geeks For Geeks>