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.
Défi
FacileCré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
nreprésentant le nombre d’éléments à ajouter initialement au vecteur - Puis
nentiers à insérer dans le vecteur - Un entier
mreprésentant le nombre d’éléments à supprimer - Puis
mentiers représentant les éléments à supprimer du vecteur
Votre programme doit :
- Créer un
std::vector<int>vide - Lire le nombre d’éléments à ajouter et les insérer dans le vecteur en utilisant
.push_back() - Afficher la taille initiale du vecteur après toutes les insertions
- Lire le nombre d’éléments à supprimer
- Pour chaque élément à supprimer, utiliser
std::find()pour le localiser, puis utiliser.erase()pour le supprimer s’il est trouvé - Après chaque tentative de suppression, afficher la taille actuelle du vecteur
- 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;
}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âcheEntraînez-vous par vous-même : Compilateur C++ en ligne