logo

vektor::empty() og vektor::størrelse() i C++ STL

Vektorer er de samme som dynamiske matriser med muligheten til å endre størrelsen på seg selv automatisk når et element settes inn eller slettes, og lagringen deres håndteres automatisk av beholderen.

vektor::empty()

Tom()-funksjonen brukes til å sjekke om vektorbeholderen er tom eller ikke.
Syntaks:



  vectorname  .empty() Parameters : No parameters are passed. Returns : True, if vector is empty False, Otherwise>

Eksempler:

Input : myvector = 1, 2, 3, 4, 5 myvector.empty(); Output : False Input : myvector = {} myvector.empty(); Output : True>

Tidskompleksitet – Konstant O(1)

Feil og unntak
1. Den har en kastgaranti uten unntak.
2. Viser feil når en parameter sendes.



CPP






// CPP program to illustrate> // Implementation of empty() function> #include> #include> using> namespace> std;> int> main()> {> >vector<>int>>myvector{};> >if> (myvector.empty())> >{> >cout <<>'True'>;> >}> >else> {> >cout <<>'False'>;> >}> >return> 0;> }>

>

>

rev vs ulv
Produksjon

True>

Applikasjon :
Gitt en liste over heltall, finn summen av alle heltallene.

Input : 1, 5, 6, 3, 9, 2 Output : 26 Explanation - 1+5+6+3+9+2 = 26>

Algoritme
1. Sjekk om vektoren er tom, hvis ikke legg til bakelementet til en variabel initialisert som 0, og trykk bakelementet.
2. Gjenta dette trinnet til vektoren er tom.
3. Skriv ut den endelige verdien til variabelen.

CPP




// CPP program to illustrate> // Application of empty() function> #include> #include> using> namespace> std;> int> main()> {> >int> sum = 0;> >vector<>int>>minvektor{ 1, 5, 6, 3, 9, 2 };> >while> (!myvector.empty())> >{> >sum = sum + myvector.back();> >myvector.pop_back();> >}> >cout << sum;> >return> 0;> }>

>

>

Produksjon

26>
vektor::størrelse()

size()-funksjonen brukes til å returnere størrelsen på vektorbeholderen eller antall elementer i vektorbeholderen.
Syntaks:

  vectorname  .size() Parameters : No parameters are passed. Returns : Number of elements in the container.>

Eksempler:

Input : myvector = 1, 2, 3, 4, 5 myvector.size(); Output : 5 Input : myvector = {} myvector.size(); Output : 0>

Tidskompleksitet – Konstant O(1)

Feil og unntak
1. Den har ingen unntak kastegaranti.
2. Viser feil når en parameter sendes.

all caps kommandoen excel

CPP




// CPP program to illustrate> // Implementation of size() function> #include> #include> using> namespace> std;> int> main()> {> >vector<>int>>minvektor{ 1, 2, 3, 4, 5 };> >cout << myvector.size();> >return> 0;> }>

>

>

Produksjon

5>

Hvorfor foretrekkes tomme() fremfor størrelse()
empty()-funksjonen sies ofte å være foretrukket fremfor størrelse()-funksjonen på grunn av noen av disse punktene-

  1. empty() funksjon bruker ingen sammenligningsoperatører , dermed er det mer praktisk å bruke
  2. empty() funksjonen er implementert på konstant tid , uavhengig av beholdertype, mens noen implementeringer av size()-funksjonen krever O(n) tidskompleksitet som list::size().

Applikasjon :
Gitt en liste over heltall, finn summen av alle heltallene.

Input : 1, 5, 6, 3, 9, 2 Output : 26 Explanation - 1+5+6+3+9+2 = 26>

Algoritme
1. Sjekk om størrelsen på vektoren er 0, hvis ikke legg til bakelementet til en variabel initialisert som 0, og trykk bakelementet.
2. Gjenta dette trinnet til størrelsen på vektoren blir 0.
3. Skriv ut den endelige verdien til variabelen.

CPP




// CPP program to illustrate> // Application of size() function> #include> #include> using> namespace> std;> int> main()> {> >int> sum = 0;> >vector<>int>>minvektor{ 1, 5, 6, 3, 9, 2 };> >while> (myvector.size()>0) {> >sum = sum + myvector.back();> >myvector.pop_back();> >}> >cout << sum;> >return> 0;> }>

>

>

Produksjon

hvordan sortere en matrise i java
26>

Vi er pålagt å være forsiktige når vi bruker size().

Tenk for eksempel på følgende 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;> }>

>

>

Produksjon

Geeks For Geeks>

Programmet ovenfor fungerer fint, men la oss nå vurdere følgende program:

tkinter-knappen

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;> }>

>

>

Produksjon:

Segmenteringsfeil SIGEGV

Ved å kompilere programmet ovenfor får vi Segmentation Fault (SIGSEGV) fordi returtypen for size() er size_t som er et alias for unsigned long int.-> unsigned long int var = 0;-> coutcout << vec.size() – 1; // Dette vil også være lik 18446744073709551615

så vi går fra i = 0 til i = 18446744073709551615 i programmet ovenfor

Vurder nå scenariet der vi sletter elementer fra den initialiserte beholderen vår og etter en sekvens av operasjoner blir beholderen tom, og til slutt skriver vi ut innholdet i beholderen vår ved å bruke metoden ovenfor. Det vil definitivt føre til segmenteringsfeil (SIGSEGV).

Hvordan fikse det?

Det anbefales å skrive container.size() til heltallstype for å unngå segmenteringsfeil (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>

alfabet og tall
>

>

Produksjon

Geeks For Geeks>