Menu
Coddy logo textTech

Supprimer des éléments

Fait partie de la section Logique et Flux du Journey C++ de Coddy — leçon 38 sur 56.

Parfois, vous devez supprimer des éléments d'un ensemble lorsqu'ils ne sont plus nécessaires. La méthode .erase() vous permet de supprimer un élément spécifique en fournissant sa valeur.

Voici comment supprimer un élément d'un ensemble (set) :

std::set<int> numbers = {10, 20, 30, 40};
numbers.erase(20);  // Supprime l'élément 20

Après avoir appelé .erase(20), l'ensemble ne contiendra que {10, 30, 40}. Si vous essayez de supprimer un élément qui n'existe pas dans l'ensemble, rien ne se passe - l'ensemble reste inchangé et aucune erreur ne se produit.

Cela rend .erase() sûr à utiliser même lorsque vous n'êtes pas certain que l'élément existe. C'est particulièrement utile pour maintenir des collections propres où vous devez supprimer des éléments spécifiques en fonction de l'entrée de l'utilisateur ou de la logique du programme.

challenge icon

Défi

Facile

Créez un programme qui démontre la suppression d'éléments d'un std::set en utilisant la méthode .erase(). Ce défi testera votre compréhension de la manière de supprimer en toute sécurité des éléments spécifiques d'un ensemble et d'observer les résultats.

Les entrées suivantes seront fournies :

  • Un entier n représentant le nombre d'éléments à ajouter initialement à l'ensemble
  • Ensuite, n entiers à insérer dans l'ensemble
  • Un entier m représentant le nombre d'éléments à supprimer
  • Ensuite, m entiers représentant les éléments à supprimer de l'ensemble

Votre programme doit :

  1. Créer un std::set<int> vide
  2. Lire le nombre d'éléments à ajouter et les insérer dans l'ensemble en utilisant .insert()
  3. Afficher la taille initiale de l'ensemble après toutes les insertions
  4. Lire le nombre d'éléments à supprimer
  5. Pour chaque élément à supprimer, utiliser .erase() pour tenter la suppression
  6. Après chaque tentative de suppression, afficher la taille actuelle de l'ensemble
  7. Enfin, parcourir les éléments restants dans l'ensemble et les afficher dans l'ordre trié

Utilisez le format de sortie exact suivant :

Taille initiale de l'ensemble :

Initial size: [size]

Après chaque tentative de suppression :

After removing [number]: size = [current_size]

Éléments restants finaux :

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

N'oubliez pas que .erase() gère en toute sécurité les tentatives de suppression d'éléments qui n'existent pas dans l'ensemble - l'ensemble reste inchangé et aucune erreur ne se produit. Utilisez une boucle for basée sur une plage (range-based for loop) pour afficher les éléments restants, et ils seront automatiquement affichés dans l'ordre trié puisque les ensembles maintiennent leurs éléments dans une séquence triée.

Aide-mémoire

Utilisez .erase() pour supprimer un élément spécifique d'un ensemble (set) en fournissant sa valeur :

std::set<int> numbers = {10, 20, 30, 40};
numbers.erase(20);  // Supprime l'élément 20

Si vous essayez de supprimer un élément qui n'existe pas dans l'ensemble, rien ne se passe - l'ensemble reste inchangé et aucune erreur ne se produit, ce qui rend l'utilisation de .erase() sûre.

Essayez vous-même

#include <iostream>
#include <set>
using namespace std;

int main() {
    // Lire le nombre d'éléments à ajouter
    int n;
    cin >> n;
    
    // Créer un ensemble vide
    set<int> mySet;
    
    // Lire et insérer n éléments
    for (int i = 0; i < n; i++) {
        int element;
        cin >> element;
        // Insérer l'élément dans l'ensemble
    }
    
    // Lire le nombre d'éléments à supprimer
    int m;
    cin >> m;
    
    // TODO: Écrivez votre code ci-dessous
    // 1. Afficher la taille initiale de l'ensemble
    // 2. Pour chaque élément à supprimer, utiliser .erase() et afficher la taille après chaque suppression
    // 3. Afficher les éléments restants dans l'ensemble
    
    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