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 20Aprè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.
Défi
FacileCré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
nreprésentant le nombre d'éléments à ajouter initialement à l'ensemble - Ensuite,
nentiers à insérer dans l'ensemble - Un entier
mreprésentant le nombre d'éléments à supprimer - Ensuite,
mentiers représentant les éléments à supprimer de l'ensemble
Votre programme doit :
- Créer un
std::set<int>vide - Lire le nombre d'éléments à ajouter et les insérer dans l'ensemble en utilisant
.insert() - Afficher la taille initiale de l'ensemble après toutes les insertions
- Lire le nombre d'éléments à supprimer
- Pour chaque élément à supprimer, utiliser
.erase()pour tenter la suppression - Après chaque tentative de suppression, afficher la taille actuelle de l'ensemble
- 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 20Si 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;
}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
1Pointeurs et mémoire
Qu'est-ce qu'un pointeur ?Opérateur d'adresseOpérateur de déréférencementPointeurs nulsPointeurs et tableauxMémoire dynamique avec 'new'Libérer la mémoire avec 'delete'Récapitulatif - Pratique des pointeurs2Vecteurs (Tableaux dynamiques)
Introduction à std::vectorCréer un vecteurAjouter des élémentsAccéder aux élémentsTaille d'un vecteurItérer avec une boucle ForBoucle For basée sur l'intervalleSupprimer des élémentsRécapitulatif - Opérations sur les vecteurs3Projet : Outil de liste de tâches
Présentation du projetAjouter une tâche6Ensembles (Éléments uniques)
Introduction à std::setCréer un Set et ajouter des élémentsVérifier la présence d'élémentsSupprimer des élémentsParcourir un SetRécapitulatif - Nombres uniques