Introduction
Dans ce laboratoire, vous allez apprendre à utiliser la méthode erase() pour supprimer des éléments dans une carte (map) de la bibliothèque standard C++ (STL). La carte (map) est un conteneur qui stocke des données sous forme de paires clé-valeur.
Créer une carte (map)
Créez une instance de carte (map) dans le fichier main.cpp en incluant ces fichiers d'en-tête en haut du fichier :
#include <iostream>
#include <bits/stdc++.h>
Déclarez une carte (map) avec des clés et des valeurs de type entier comme suit :
map<int, int> m;
Insérer des données dans la carte (map)
Insérez des données aléatoires dans la carte (map) à l'aide de la méthode insert(). La méthode make_pair() peut être utilisée pour attribuer des paires clé-valeur à la carte (map).
m.insert(make_pair(3, 9));
m.insert(make_pair(2, 4));
m.insert(make_pair(5, 25));
m.insert(make_pair(9, 81));
m.insert(make_pair(1, 1));
Supprimer un élément de la carte (map)
Utilisez la méthode erase(x) pour supprimer un élément de la carte (map) dont la clé a pour valeur x. Si la valeur n'existe pas, elle renvoie 0, sinon 1.
int j = m.erase(5);
if(j == 1) {
cout << "\nL'élément de la carte (`map`) avec la clé 5 est supprimé.";
} else {
cout << "\nL'élément de la carte (`map`) avec la clé 5 n'existe pas.";
}
Vous pouvez également supprimer un élément avec une valeur de clé qui n'existe pas dans la carte (map) sans que le programme ne plante. Par exemple :
int k = m.erase(6);
if(k!= 0){
cout << "\n\nL'élément de la carte (`map`) avec la clé 6 est supprimé\n\n";
} else {
cout << "\n\nL'élément de la carte (`map`) avec la clé 6 n'existe pas.";
}
Exécuter le code
Pour exécuter le code, accédez au répertoire contenant le fichier main.cpp dans le terminal et entrez les commandes suivantes pour compiler et exécuter :
$ g++ main.cpp -o main
$./main
Code complet
Voici le code complet pour votre référence :
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main()
{
cout << "\n\nBienvenue sur LabEx :-)\n\n\n";
cout << "===== Programme pour démontrer le fonctionnement de la méthode erase() dans une carte (`map`), partie 1, en CPP ===== \n\n\n";
cout << "*** La méthode erase(x) supprime l'élément de la carte (`map`) dont la clé est x et renvoie 1 si trouvé, sinon renvoie 0. *** \n\n";
// Déclaration de la carte (`map`) (Carte avec clé et valeur toutes deux de type entier)
map<int, int> m;
// Remplissage des éléments en utilisant la méthode insert()
cout << "\n\nRemplissage de la carte (`map`) avec des paires clé-valeur d'entiers dans un ordre aléatoire."; //La carte (`map`) les stocke automatiquement dans l'ordre croissant des clés
//make_pair() est utilisé pour insérer une paire clé-valeur dans la carte (`map`)
m.insert(make_pair(3, 9));
m.insert(make_pair(2, 4));
m.insert(make_pair(5, 25));
m.insert(make_pair(9, 81));
m.insert(make_pair(1, 1));
cout << "\n\nLe nombre d'éléments dans la carte (`map`) est : " << m.size();
cout << "\n\nLes éléments de la carte (`map`) m sont : ";
map<int, int>::iterator i;
int j = 0;
for (i = m.begin(); i!= m.end(); i++)
{
cout << "( " << i->first << ", " << i->second << " ) ";
}
//Recherche de l'élément de la carte (`map`) avec la clé 5
j = m.erase(5);
if (j == 1)
{
cout << "\n\nL'élément de la carte (`map`) avec la clé 5 est supprimé.";
}
else
{
cout << "\n\nL'élément de la carte (`map`) avec la clé 5 n'existe pas.";
}
cout << "\n\nLe nombre d'éléments dans la carte (`map`) devient : " << m.size();
cout << "\n\nLes éléments de la carte (`map`) m après l'opération erase sont : ";
j = 0;
for (i = m.begin(); i!= m.end(); i++)
{
cout << "( " << i->first << ", " << i->second << " ) ";
}
j = m.erase(6);
if (i!= m.end())
{
cout << "\n\nL'élément de la carte (`map`) avec la clé 6 est supprimé\n\n";
}
else
{
cout << "\n\nL'élément de la carte (`map`) avec la clé 6 n'existe pas.";
}
cout << "\n\n\n";
return 0;
}
Résumé
Dans ce laboratoire, vous avez commencé par créer une carte (map) puis l'avez remplie de données. Ensuite, vous avez appris à utiliser la méthode erase() pour supprimer des éléments de la carte (map) à l'aide de leurs clés. Nous espérons que les exemples ci-dessus vous aideront à comprendre comment supprimer des éléments d'une carte (map) dans la bibliothèque standard C++ (STL).



