Vecteurs sont identiques aux tableaux dynamiques avec la possibilité de se redimensionner automatiquement lorsqu'un élément est inséré ou supprimé, leur stockage étant géré automatiquement par le conteneur.
La fonction empty() est utilisée pour vérifier si le conteneur vectoriel est vide ou non.
Syntaxe :
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>
Complexité temporelle – Constante O(1)
tableau de tri Java
Erreurs et exceptions
1. Il a une garantie sans exception.
2. Affiche une erreur lorsqu'un paramètre est passé.
RPC
// CPP program to illustrate> // Implementation of empty() function> #include> #include> using> namespace> std;> int> main()> {> > vector<> int> >monvecteur{};> > if> (myvector.empty())> > {> > cout <<> 'True'> ;> > }> > else> {> > cout <<> 'False'> ;> > }> > return> 0;> }> |
>
>Sortir
True>
Application :
Étant donné une liste d’entiers, trouvez la somme de tous les entiers.
Input : 1, 5, 6, 3, 9, 2 Output : 26 Explanation - 1+5+6+3+9+2 = 26>
Algorithme
1. Vérifiez si le vecteur est vide, sinon ajoutez l'élément arrière à une variable initialisée à 0 et affichez l'élément arrière.
2. Répétez cette étape jusqu'à ce que le vecteur soit vide.
3. Imprimez la valeur finale de la variable.
RPC
// CPP program to illustrate> // Application of empty() function> #include> #include> using> namespace> std;> int> main()> {> > int> sum = 0;> > vector<> int> >monvecteur{ 1, 5, 6, 3, 9, 2 };> > while> (!myvector.empty())> > {> > sum = sum + myvector.back();> > myvector.pop_back();> > }> > cout << sum;> > return> 0;> }> |
>
>Sortir
26>vecteur :: taille ()
La fonction size() est utilisée pour renvoyer la taille du conteneur vectoriel ou le nombre d’éléments dans le conteneur vectoriel.
Syntaxe :
bin en bcd
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>
Complexité temporelle – Constante O(1)
Erreurs et exceptions
1. Il a une garantie sans exception.
2. Affiche une erreur lorsqu'un paramètre est passé.
RPC
// CPP program to illustrate> // Implementation of size() function> #include> #include> using> namespace> std;> int> main()> {> > vector<> int> >monvecteur{ 1, 2, 3, 4, 5 };> > cout << myvector.size();> > return> 0;> }> |
>
>Sortir
5>
Pourquoi empty() est-il préféré à size()
La fonction empty() est souvent considérée comme préférée à la fonction size() en raison de certains de ces points :
- fonction vide() n'utilise aucun opérateur de comparaison , il est donc plus pratique d'utiliser
- La fonction vide() est mis en œuvre en temps constant , quel que soit le type de conteneur, alors que certaines implémentations de la fonction size() nécessitent une complexité temporelle O(n) telle que list::size().
Application :
Étant donné une liste d’entiers, trouvez la somme de tous les entiers.
Input : 1, 5, 6, 3, 9, 2 Output : 26 Explanation - 1+5+6+3+9+2 = 26>
Algorithme
1. Vérifiez si la taille du vecteur est 0, sinon ajoutez l'élément arrière à une variable initialisée à 0 et affichez l'élément arrière.
2. Répétez cette étape jusqu'à ce que la taille du vecteur devienne 0.
3. Imprimez la valeur finale de la variable.
RPC
// CPP program to illustrate> // Application of size() function> #include> #include> using> namespace> std;> int> main()> {> > int> sum = 0;> > vector<> int> >monvecteur{ 1, 5, 6, 3, 9, 2 };> > while> (myvector.size()>0) {> > sum = sum + myvector.back();> > myvector.pop_back();> > }> > cout << sum;> > return> 0;> }> |
>
>Sortir
26>
Nous devons être prudents lors de l’utilisation de size().
Par exemple, considérons le programme suivant :
C++
ymail
#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;> }> |
>
>Sortir
Geeks For Geeks>
Le programme ci-dessus fonctionne bien mais considérons maintenant le programme suivant :
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;> }> |
>
>
Sortir:
Défaut de segmentation SIGEGV
En compilant le programme ci-dessus, nous obtenons un défaut de segmentation (SIGSEGV) car le type de retour de size() est size_t qui est un alias pour unsigned long int.-> unsigned long int var = 0;-> cout
nous bouclons donc de i = 0 à i = 18446744073709551615 dans le programme ci-dessus
Considérons maintenant le scénario dans lequel nous supprimons des éléments de notre conteneur initialisé et après une séquence d'opérations, notre conteneur devient vide et enfin, nous imprimons le contenu de notre conteneur en utilisant la méthode ci-dessus. Certainement, cela conduira à un défaut de segmentation (SIGSEGV).
Comment le réparer?
Il est conseillé de transtyper containers.size() en type entier afin d'éviter un défaut de segmentation (SIGSEGV).
questions d'entretien en langage Java
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> |
>
>Sortir
Geeks For Geeks>