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
- Il a une garantie sans exception.
- 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
- Il n’y a aucune garantie de levée d’exception si la position est valide.
- 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
- Exécutez une boucle à la taille du vecteur.
- 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.
- 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.