Vectors són els mateixos que les matrius dinàmiques amb la possibilitat de canviar la mida automàticament quan s'insereix o s'elimina un element, amb el seu emmagatzematge gestionat automàticament pel contenidor.
La funció empty() s'utilitza per comprovar si el contenidor vectorial està buit o no.
Sintaxi:
vectorname .empty() Parameters : No parameters are passed. Returns : True, if vector is empty False, Otherwise>
Exemples:
Input : myvector = 1, 2, 3, 4, 5 myvector.empty(); Output : False Input : myvector = {} myvector.empty(); Output : True>
Complexitat temporal - constant O(1)
Errors i excepcions
1. No té cap excepció garantia de llançament.
2. Mostra un error quan es passa un paràmetre.
CPP
// CPP program to illustrate> // Implementation of empty() function> #include> #include> using> namespace> std;> int> main()> {> > vector<> int> >el meuvector{};> > if> (myvector.empty())> > {> > cout <<> 'True'> ;> > }> > else> {> > cout <<> 'False'> ;> > }> > return> 0;> }> |
>
>Sortida
True>
Aplicació:
Donada una llista de nombres enters, troba la suma de tots els nombres enters.
Input : 1, 5, 6, 3, 9, 2 Output : 26 Explanation - 1+5+6+3+9+2 = 26>
Algoritme
1. Comproveu si el vector està buit, si no, afegiu l'element posterior a una variable inicialitzada com a 0, i feu clic a l'element posterior.
2. Repetiu aquest pas fins que el vector estigui buit.
3. Imprimeix el valor final de la variable.
CPP
convertir de cadena a nombre enter java
// CPP program to illustrate> // Application of empty() function> #include> #include> using> namespace> std;> int> main()> {> > int> sum = 0;> > vector<> int> >el meuvector{ 1, 5, 6, 3, 9, 2 };> > while> (!myvector.empty())> > {> > sum = sum + myvector.back();> > myvector.pop_back();> > }> > cout << sum;> > return> 0;> }> |
>
>Sortida
26>vector::mida()
La funció size() s'utilitza per retornar la mida del contenidor vectorial o el nombre d'elements del contenidor vectorial.
Sintaxi:
vectorname .size() Parameters : No parameters are passed. Returns : Number of elements in the container.>
Exemples:
Input : myvector = 1, 2, 3, 4, 5 myvector.size(); Output : 5 Input : myvector = {} myvector.size(); Output : 0>
Complexitat temporal – Constant O (1)
Errors i excepcions
1. No té cap excepció garantia de llançament.
2. Mostra un error quan es passa un paràmetre.
CPP
// CPP program to illustrate> // Implementation of size() function> #include> #include> using> namespace> std;> int> main()> {> > vector<> int> >el meuvector{ 1, 2, 3, 4, 5 };> > cout << myvector.size();> > return> 0;> }> |
>
string convertir a int a Java
>Sortida
5>
Per què es prefereix empty() a la mida()
Sovint es diu que la funció empty() és preferida a la funció size() a causa d'alguns d'aquests punts:
- funció empty(). no utilitza cap operador de comparació , per tant, és més còmode d'utilitzar
- La funció empty() és implementat en temps constant , independentment del tipus de contenidor, mentre que algunes implementacions de la funció size() requereixen complexitat de temps O(n), com ara list::size().
Aplicació:
Donada una llista de nombres enters, troba la suma de tots els nombres enters.
Input : 1, 5, 6, 3, 9, 2 Output : 26 Explanation - 1+5+6+3+9+2 = 26>
Algoritme
1. Comproveu si la mida del vector és 0, si no, afegiu l'element posterior a una variable inicialitzada com a 0, i feu clic a l'element posterior.
2. Repetiu aquest pas fins que la mida del vector sigui 0.
3. Imprimeix el valor final de la variable.
CPP
// CPP program to illustrate> // Application of size() function> #include> #include> using> namespace> std;> int> main()> {> > int> sum = 0;> > vector<> int> >el meuvector{ 1, 5, 6, 3, 9, 2 };> > while> (myvector.size()>0) {> > sum = sum + myvector.back();> > myvector.pop_back();> > }> > cout << sum;> > return> 0;> }> |
>
>Sortida
26>
Hem de tenir cura quan utilitzem size().
Per exemple, considereu el programa següent:
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;> }> |
>
>Sortida
Geeks For Geeks>
El programa anterior funciona bé, però ara considerem el programa següent:
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;> }> |
>
comparat en java
>
Sortida:
Falla de segmentació SIGEGV
En compilar el programa anterior, obtenim Segmentation Fault (SIGSEGV) perquè el tipus de retorn de size() és size_t, que és un àlies per unsigned long int.-> unsigned long int var = 0;-> cout
així que estem fent un bucle de i = 0 a i = 18446744073709551615 al programa anterior
Considereu ara l'escenari en què estem suprimint elements del nostre contenidor inicialitzat i després d'una seqüència d'operacions el nostre contenidor es buida i, finalment, estem imprimint el contingut del nostre contenidor mitjançant el mètode anterior. Definitivament, donarà lloc a un error de segmentació (SIGSEGV).
Com solucionar-ho?
És recomanable convertir container.size() al tipus d'enter per evitar errors de segmentació (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> |
>
>Sortida
Geeks For Geeks>