logo

vecteur effacer() et clear() en C++

Prérequis: Vecteur en C++

Les 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.



vecteur :: clear ()

Le clair() La fonction est utilisée pour supprimer tous les éléments du conteneur vectoriel, lui donnant ainsi une taille 0.

Syntaxe:

 vector_name .clear()>

Paramètres: Aucun paramètre n'est transmis.



Résultat: Tous les éléments du vecteur sont supprimés (ou détruits).

Exemple:

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

C++






// C++ program to demonstrate> // Implementation of clear() function> #include> #include> using> namespace> std;> int> main()> {> >vector<>int>>monvecteur;> >myvector.push_back(1);> >myvector.push_back(2);> >myvector.push_back(3);> >myvector.push_back(4);> >myvector.push_back(5);> >// Vector becomes 1, 2, 3, 4, 5> >myvector.clear();> >// vector becomes empty> >// Printing the vector> >for> (>auto> it = myvector.begin(); it != myvector.end();> >++it)> >cout <<>' '> << *it;> >return> 0;> }>

>

>

Sortir

 No Output>

Complexité temporelle : SUR)
Espace auxiliaire : O(1)
Tous les éléments sont détruits un par un.

Erreurs et exceptions

  1. Il a une garantie sans exception.
  2. Il affiche une erreur lorsqu'un paramètre est passé.

vecteur :: effacer ()

effacer() La fonction est utilisée pour supprimer des éléments d’un conteneur à partir de la position ou de la plage spécifiée.

Syntaxe:

 vector_name . erase( position ) ; for deletion at specific position vector_name . erase( starting_position , ending_position ) ; // for deletion in range>

Paramètres:

  • Position de l'élément à supprimer sous forme d'itérateur.
  • La plage est spécifiée à l’aide des itérateurs de début et de fin.

Résultat: Les éléments sont supprimés de la position spécifiée du conteneur.

Exemple:

 Input : myvector= {1, 2, 3, 4, 5}, iterator= myvector.begin()+2 myvector.erase(iterator); Output : 1, 2, 4, 5 Input : myvector= {1, 2, 3, 4, 5, 6, 7, 8}, iterator1= myvector.begin()+3, iterator2= myvector.begin()+6 myvector.erase(iterator1, iterator2); Output : 1, 2, 3, 7, 8>

Suppression un élément de un position particulière

Exemple:

C++




// C++ program to demonstrate> // working of erase() function> #include> #include> using> namespace> std;> int> main()> {> >vector<>int>>monvecteur{ 1, 2, 3, 4, 5 };> >vector<>int>>::itérateur;> >it = myvector.begin();> >myvector.erase(it);> >// Printing the Vector> >for> (>auto> it = myvector.begin(); it != myvector.end();> >++it)> >cout <<>' '> << *it;> >return> 0;> }>

>

>

Sortir

exemples de programmation python
 2 3 4 5>

Complexité temporelle : SUR)
Espace auxiliaire : O(1)

Supprimer un élément particulier

Pour supprimer un élément particulier en fonction de sa valeur, nous devons d’abord connaître sa position et nous pouvons le trouver à l’aide de la fonction find()

Exemple:

C++




// C++ program to remove element based on its value> #include> using> namespace> std;> int> main()> {> >vector<>int>>vecteur = { 1, 2, 3, 3, 4, 5 };> >cout <<>'vector before deleting '> << endl;> >for> (>auto> element : vector) {> >cout << element <<>' '>;> >}> >// finding the position of the element in the vector> >int> valueToBeDeleted = 3;> >auto> it = find(vector.begin(), vector.end(),> >valueToBeDeleted);> >if> (it != vector.end()) {> >vector.erase(it);> >}> >cout << endl> ><<>'Vector after deleting valueToBeDeleted '> ><< endl;> >for> (>auto> element : vector) {> >cout << element <<>' '>;> >}> >cout << endl;> >return> 0;> }>

>

>

Sortir

vector before deleting 1 2 3 3 4 5 Vector after deleting valueToBeDeleted 1 2 3 4 5>

Supprimer des éléments dans une plage

C++




// C++ program to demonstrate> // Implementation of erase() function> #include> #include> using> namespace> std;> int> main()> {> >vector<>int>>monvecteur{ 1, 2, 3, 4, 5 };> >vector<>int>>::itérateur it1, it2;> >it1 = myvector.begin();> >it2 = myvector.end();> >it2--;> >it2--;> >myvector.erase(it1, it2);> >// Printing the Vector> >for> (>auto> it = myvector.begin(); it != myvector.end();> >++it)> >cout <<>' '> << *it;> >return> 0;> }>

>

>

Sortir

 4 5>

Complexité temporelle : SUR)
Espace auxiliaire : O(1)

Suppression d'éléments de paires vectorielles

Exemple:

C++




#include> using> namespace> std;> // Function to print vector pair elements> void> print(vectorint, string>>& chose) { cout<< '['; for (int i = 0; i cout << '{' << vec[i].first << ',' << vec[i].second << '}'; if (i cout << ', '; } cout << ']' << endl; } int main() { vectorint, string>> x = { { 1, 'pomme' }, { 2, 'banane' }, { 3, 'cerise' }, { 4, 'Goyave' } } ; // Supprime l'élément en position 1 (index 0) x.erase(x.begin()); imprimer(x); // Print [{2,banana}, {3,cherry}, {4,Guava}] // Supprime les éléments aux positions 0 et 1 (index 0 // et 1) x.erase(x.begin(), x.begin() + 2); imprimer(x); // Imprimer [{4,Guava}] // Effacer le vecteur x.clear(); imprimer(x); // N'imprime rien (seulement des crochets vides) return 0 ; } // Ce code est contribué par Susobhan Akhuli>

>

>

Sortir

[{2,banana}, {3,cherry}, {4,Guava}] [{4,Guava}] []>

Complexité temporelle : SUR)
Espace auxiliaire : O(1)

Erreurs et exceptions

  1. Il n’y a aucune garantie de levée d’exception si la position est valide.
  2. Dans le cas contraire, affiche un comportement non défini.

Application

Étant donné une liste d'entiers, supprimez tous les éléments pairs du vecteur et imprimez le vecteur.

Saisir:

1, 2, 3, 4, 5, 6, 7, 8, 9>

Sortir:

1 3 5 7 9>

Explication: 2, 4, 6 et 8 qui sont pairs et effacés du vecteur

Algorithme

  1. Exécutez une boucle à la taille du vecteur.
  2. Vérifiez si l'élément à chaque position est divisible par 2, si oui, supprimez l'élément et décrémentez l'itérateur.
  3. Imprimez le vecteur final.

Le programme ci-dessous implémente l’approche ci-dessus.

C++




// C++ program to demonstrate> // Application of erase() function> #include> #include> using> namespace> std;> int> main()> {> >vector<>int>>monvecteur{ 1, 2, 3, 4, 5, 6, 7, 8, 9 };> >for> (>auto> i = myvector.begin(); i != myvector.end();> >++i) {> >if> (*i % 2 == 0) {> >myvector.erase(i);> >i--;> >}> >}> >// Printing the vector> >for> (>auto> it = myvector.begin(); it != myvector.end();> >++it)> >cout <<>' '> << *it;> >return> 0;> }>

>

>

Sortir

 1 3 5 7 9>

Complexité temporelle : O(N) dans le pire des cas car un effacement prend un temps linéaire.

clear() vs delete(), quand utiliser quoi ?

clair() supprime tous les éléments d'un conteneur vectoriel, rendant ainsi sa taille 0. Tous les éléments du vecteur sont supprimés à l'aide de la commande clair() fonction.

effacer() La fonction, quant à elle, est utilisée pour supprimer des éléments spécifiques du conteneur ou une plage d'éléments du conteneur, réduisant ainsi sa taille du nombre d'éléments supprimés.