Supprimer des éléments d'une carte (`map`) en C++

C++C++Beginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

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.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL cpp(("C++")) -.-> cpp/ControlFlowGroup(["Control Flow"]) cpp(("C++")) -.-> cpp/OOPGroup(["OOP"]) cpp(("C++")) -.-> cpp/IOandFileHandlingGroup(["I/O and File Handling"]) cpp(("C++")) -.-> cpp/StandardLibraryGroup(["Standard Library"]) cpp(("C++")) -.-> cpp/BasicsGroup(["Basics"]) cpp/BasicsGroup -.-> cpp/variables("Variables") cpp/BasicsGroup -.-> cpp/operators("Operators") cpp/ControlFlowGroup -.-> cpp/conditions("Conditions") cpp/OOPGroup -.-> cpp/class_methods("Class Methods") cpp/IOandFileHandlingGroup -.-> cpp/output("Output") cpp/IOandFileHandlingGroup -.-> cpp/files("Files") cpp/StandardLibraryGroup -.-> cpp/standard_containers("Standard Containers") subgraph Lab Skills cpp/variables -.-> lab-96229{{"Supprimer des éléments d'une carte (`map`) en C++"}} cpp/operators -.-> lab-96229{{"Supprimer des éléments d'une carte (`map`) en C++"}} cpp/conditions -.-> lab-96229{{"Supprimer des éléments d'une carte (`map`) en C++"}} cpp/class_methods -.-> lab-96229{{"Supprimer des éléments d'une carte (`map`) en C++"}} cpp/output -.-> lab-96229{{"Supprimer des éléments d'une carte (`map`) en C++"}} cpp/files -.-> lab-96229{{"Supprimer des éléments d'une carte (`map`) en C++"}} cpp/standard_containers -.-> lab-96229{{"Supprimer des éléments d'une carte (`map`) en C++"}} end

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écapitulatif

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).