Menu
CoddyTech

Supprimer des éléments

Fait partie de la section Logique et Flux du Journey C++ de Coddy. Leçon 16 sur 56.

Parfois, tu dois supprimer des éléments d’un vecteur lorsqu’ils ne sont plus nécessaires. Les vecteurs nécessitent d’utiliser un itérateur avec la méthode .erase(). Tu peux combiner std::find() avec .erase() pour supprimer des éléments par valeur.

Voici comment supprimer un élément d’un vecteur. std::find() provient de l’en-tête <algorithm> ; incluez-le donc avec <vector> :

#include <algorithm>
#include <vector>
std::vector<int> numbers = {10, 20, 30, 40};
auto it = std::find(numbers.begin(), numbers.end(), 20);
if (it != numbers.end()) {
    numbers.erase(it);  // Supprime l’élément à la position de l’itérateur
}

Après avoir appelé erase(), l’élément à cette position est supprimé et tous les éléments suivants se décalent vers le bas. Si tu essaies de trouver et de supprimer un élément qui n’existe pas, find() renverra end(), et vérifier cela évite les erreurs.

Ce modèle rend la suppression d’éléments sûre et prévisible. Il est particulièrement utile pour gérer des collections dynamiques lorsque tu dois supprimer des éléments spécifiques en fonction de la saisie de l’utilisateur ou de la logique du programme. N’oublie pas de toujours vérifier que l’itérateur est valide avant de supprimer.

challenge icon

Défi

Facile

Créez un programme qui montre comment supprimer des éléments d’un std::vector en utilisant la méthode .erase() combinée à std::find(). Ce défi mettra à l’épreuve votre compréhension de la suppression sécurisée d’éléments spécifiques d’un vecteur et de l’observation des résultats.

Les entrées suivantes seront fournies :

  • Un entier n représentant le nombre d’éléments à ajouter initialement au vecteur
  • Puis n entiers à insérer dans le vecteur
  • Un entier m représentant le nombre d’éléments à supprimer
  • Puis m entiers représentant les éléments à supprimer du vecteur

Votre programme doit :

  1. Créer un std::vector<int> vide
  2. Lire le nombre d’éléments à ajouter et les insérer dans le vecteur en utilisant .push_back()
  3. Afficher la taille initiale du vecteur après toutes les insertions
  4. Lire le nombre d’éléments à supprimer
  5. Pour chaque élément à supprimer, utiliser std::find() pour le localiser, puis utiliser .erase() pour le supprimer s’il est trouvé
  6. Après chaque tentative de suppression, afficher la taille actuelle du vecteur
  7. Enfin, parcourir les éléments restants du vecteur et les afficher dans l’ordre

Utilisez le format de sortie exact suivant :

Taille initiale du vecteur :

Initial size: [size]

Après chaque tentative de suppression :

After removing [number]: size = [current_size]

Éléments restants à la fin :

Remaining elements: [element1] [element2] [element3] ...

N’oubliez pas que .erase() nécessite un itérateur : vous devez donc d’abord utiliser std::find() pour localiser l’élément. Vérifiez toujours que l’élément a été trouvé avant de le supprimer. Utilisez une boucle for basée sur une plage pour afficher les éléments restants dans leur ordre actuel.

Essayez vous-même

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
    // Lire le nombre d’éléments à ajouter
    int n;
    cin >> n;
    
    // Créer un vecteur vide
    vector<int> myVector;
    
    // Lire et insérer n éléments
    for (int i = 0; i < n; i++) {
        int element;
        cin >> element;
        // Insérer l’élément dans le vecteur
    }
    
    // Lire le nombre d’éléments à supprimer
    int m;
    cin >> m;
    
    // TODO: Écrivez votre code ci-dessous
    // 1. Afficher la taille initiale du vecteur
    // 2. Pour chaque élément à supprimer, le trouver, utiliser .erase() et afficher la taille après chaque suppression
    // 3. Afficher les éléments restants du vecteur
    
    return 0;
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique et Flux

Entraînez-vous par vous-même : Compilateur C++ en ligne