logo

vector::empty() y vector::size() en C++ STL

Vectores son lo mismo que las matrices dinámicas con la capacidad de cambiar su tamaño automáticamente cuando se inserta o elimina un elemento, y el contenedor maneja su almacenamiento automáticamente.

vector::vacío()

La función vacía() se utiliza para comprobar si el contenedor del vector está vacío o no.
Sintaxis:



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

Ejemplos:

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

Complejidad del tiempo – Constante O(1)

Errores y excepciones
1. Tiene una garantía de lanzamiento sin excepción.
2. Muestra error cuando se pasa un parámetro.



CPP






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

>

>

Producción

True>

Solicitud :
Dada una lista de números enteros, encuentre la suma de todos los números enteros.

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

Algoritmo
1. Compruebe si el vector está vacío; de lo contrario, agregue el elemento posterior a una variable inicializada como 0 y extraiga el elemento posterior.
2. Repita este paso hasta que el vector esté vacío.
3. Imprima el valor final de la variable.

CPP




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

¿Cuándo se inventó la primera computadora?

>

>

Producción

26>
vector::tamaño()

La función size() se utiliza para devolver el tamaño del contenedor de vectores o el número de elementos en el contenedor de vectores.
Sintaxis:

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

Ejemplos:

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

Complejidad del tiempo – Constante O(1)

Errores y excepciones
1. Tiene una garantía de lanzamiento sin excepción.
2. Muestra error cuando se pasa un parámetro.

CPP




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

>

>

Producción

5>

¿Por qué se prefiere vacío() sobre tamaño()?
A menudo se dice que la función vacía () es preferida a la función tamaño () debido a algunos de estos puntos:

  1. función vacía() no utiliza ningún operador de comparación , por lo que es más conveniente utilizar
  2. La función vacía() es implementado en tiempo constante , independientemente del tipo de contenedor, mientras que algunas implementaciones de la función size() requieren una complejidad de tiempo O(n), como list::size().

Solicitud :
Dada una lista de números enteros, encuentre la suma de todos los números enteros.

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

Algoritmo
1. Compruebe si el tamaño del vector es 0; de lo contrario, agregue el elemento posterior a una variable inicializada como 0 y extraiga el elemento posterior.
2. Repita este paso hasta que el tamaño del vector sea 0.
3. Imprima el valor final de la variable.

CPP

conectarse a una base de datos java




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

>

>

Producción

26>

Debemos tener cuidado al usar size().

Por ejemplo, considere el siguiente programa:

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

>

>

Producción

Geeks For Geeks>

El programa anterior funciona bien pero ahora consideremos el siguiente programa:

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

>

edad de kylie jenner

>

Producción:

Fallo de segmentación SIGEGV

Al compilar el programa anterior, obtenemos un error de segmentación (SIGSEGV) porque el tipo de retorno de size() es size_t, que es un alias para unsigned long int.-> unsigned long int var = 0;-> coutcout << vec.tamaño() – 1; // Esto también será igual a 18446744073709551615

entonces estamos haciendo un bucle desde i = 0 a i = 18446744073709551615 en el programa anterior

Ahora considere el escenario en el que estamos eliminando elementos de nuestro contenedor inicializado y después de una secuencia de operaciones nuestro contenedor queda vacío y, por último, estamos imprimiendo el contenido de nuestro contenedor utilizando el método anterior. Definitivamente, conducirá a una falla de segmentación (SIGSEGV).

¿Como arreglarlo?

Es recomendable encasillar contenedor.size() a tipo entero para evitar un error de segmentación (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>

>

>

Producción

Geeks For Geeks>