Vektori ir tādi paši kā dinamiskie masīvi ar iespēju automātiski mainīt izmērus, kad elements tiek ievietots vai dzēsts, un to glabāšanu automātiski apstrādā konteiners.
Funkciju tukšs () izmanto, lai pārbaudītu, vai vektoru konteiners ir tukšs.
Sintakse :
vectorname .empty() Parameters : No parameters are passed. Returns : True, if vector is empty False, Otherwise>
Piemēri:
Input : myvector = 1, 2, 3, 4, 5 myvector.empty(); Output : False Input : myvector = {} myvector.empty(); Output : True>
Laika sarežģītība - Konstante O(1)
Kļūdas un izņēmumi
1. Tam nav izņēmuma metiena garantija.
2. Parāda kļūdu, kad parametrs tiek nodots.
CPP
// CPP program to illustrate> // Implementation of empty() function> #include> #include> using> namespace> std;> int> main()> {> > vector<> int> >mansvektors{};> > if> (myvector.empty())> > {> > cout <<> 'True'> ;> > }> > else> {> > cout <<> 'False'> ;> > }> > return> 0;> }> |
>
>Izvade
True>
Pieteikums:
Dots veselu skaitļu saraksts, atrodiet visu veselo skaitļu summu.
repl java
Input : 1, 5, 6, 3, 9, 2 Output : 26 Explanation - 1+5+6+3+9+2 = 26>
Algoritms
1. Pārbaudiet, vai vektors ir tukšs, ja nepievienojiet aizmugures elementu mainīgajam, kas inicializēts kā 0, un uzlieciet aizmugurējo elementu.
2. Atkārtojiet šo darbību, līdz vektors ir tukšs.
3. Izdrukājiet mainīgā galīgo vērtību.
CPP
// CPP program to illustrate> // Application of empty() function> #include> #include> using> namespace> std;> int> main()> {> > int> sum = 0;> > vector<> int> >mansvektors{ 1, 5, 6, 3, 9, 2 };> > while> (!myvector.empty())> > {> > sum = sum + myvector.back();> > myvector.pop_back();> > }> > cout << sum;> > return> 0;> }> |
>
>Izvade
26>vektors::size()
size() funkcija tiek izmantota, lai atgrieztu vektora konteinera izmēru vai elementu skaitu vektoru konteinerā.
Sintakse :
vectorname .size() Parameters : No parameters are passed. Returns : Number of elements in the container.>
Piemēri:
Input : myvector = 1, 2, 3, 4, 5 myvector.size(); Output : 5 Input : myvector = {} myvector.size(); Output : 0>
Laika sarežģītība – konstante O(1)
Kļūdas un izņēmumi
1. Tam nav izņēmuma metiena garantija.
2. Parāda kļūdu, kad parametrs tiek nodots.
CPP
// CPP program to illustrate> // Implementation of size() function> #include> #include> using> namespace> std;> int> main()> {> > vector<> int> >mansvektors{ 1, 2, 3, 4, 5 };> > cout << myvector.size();> > return> 0;> }> |
>
>Izvade
5>
Kāpēc priekšroka tiek dota tukšam() nekā izmēram()
Dažu no šiem punktiem dēļ funkcijai tukšs () bieži tiek dota priekšroka, nevis funkcija size ()
- tukša() funkcija neizmanto salīdzināšanas operatorus , tādējādi to ir ērtāk lietot
- tukša() funkcija ir ieviests nemainīgā laikā , neatkarīgi no konteinera veida, savukārt dažām funkcijas size() implementācijām ir nepieciešama O(n) laika sarežģītība, piemēram, list::size().
Pieteikums:
Dots veselu skaitļu saraksts, atrodiet visu veselo skaitļu summu.
Input : 1, 5, 6, 3, 9, 2 Output : 26 Explanation - 1+5+6+3+9+2 = 26>
Algoritms
1. Pārbaudiet, vai vektora lielums ir 0, ja ne, pievienojiet aizmugurējo elementu mainīgajam, kas inicializēts kā 0, un uzlieciet aizmugurējo elementu.
2. Atkārtojiet šo darbību, līdz vektora lielums kļūst par 0.
3. Izdrukājiet mainīgā galīgo vērtību.
CPP
// CPP program to illustrate> // Application of size() function> #include> #include> using> namespace> std;> int> main()> {> > int> sum = 0;> > vector<> int> >mansvektors{ 1, 5, 6, 3, 9, 2 };> > while> (myvector.size()>0) {> > sum = sum + myvector.back();> > myvector.pop_back();> > }> > cout << sum;> > return> 0;> }> |
>
>Izvade
26>
Mums ir jābūt uzmanīgiem, lietojot izmēru ().
Piemēram, apsveriet šādu programmu:
virknes apakšvirkne
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;> }> |
>
>Izvade
Geeks For Geeks>
Iepriekš minētā programma darbojas labi, bet tagad apskatīsim šādu programmu:
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;> }> |
>
sklearn precizitātes rādītājs
>
Izvade:
Segmentācijas kļūda SIGEGV
Kompilējot iepriekš minēto programmu, mēs iegūstam segmentācijas kļūdu (SIGSEGV), jo lieluma() atgriešanas veids ir size_t, kas ir unsigned long int.-> unsigned long int var = 0;-> cout aizstājvārds.
tāpēc mēs veicam cilpu no i = 0 līdz i = 18446744073709551615 iepriekš minētajā programmā
Tagad apsveriet scenāriju, kurā mēs dzēšam elementus no sava inicializētā konteinera, un pēc darbību secības mūsu konteiners kļūst tukšs, un, visbeidzot, mēs izdrukājam sava konteinera saturu, izmantojot iepriekš minēto metodi. Noteikti tas novedīs pie segmentācijas kļūmes (SIGSEGV).
Kā to salabot?
Lai izvairītos no segmentācijas kļūmes (SIGSEGV), ir ieteicams typecast container.size() uz integer type.
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> |
>
>Izvade
Geeks For Geeks>