Eliminar elementos del mapa de C++

C++C++Beginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderá a usar el método erase() para eliminar elementos de un mapa en C++ STL. El mapa es un contenedor que almacena datos en pares clave-valor.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL cpp(("C++")) -.-> cpp/StandardLibraryGroup(["Standard Library"]) cpp(("C++")) -.-> cpp/BasicsGroup(["Basics"]) cpp(("C++")) -.-> cpp/ControlFlowGroup(["Control Flow"]) cpp(("C++")) -.-> cpp/OOPGroup(["OOP"]) cpp(("C++")) -.-> cpp/IOandFileHandlingGroup(["I/O and File Handling"]) 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{{"Eliminar elementos del mapa de C++"}} cpp/operators -.-> lab-96229{{"Eliminar elementos del mapa de C++"}} cpp/conditions -.-> lab-96229{{"Eliminar elementos del mapa de C++"}} cpp/class_methods -.-> lab-96229{{"Eliminar elementos del mapa de C++"}} cpp/output -.-> lab-96229{{"Eliminar elementos del mapa de C++"}} cpp/files -.-> lab-96229{{"Eliminar elementos del mapa de C++"}} cpp/standard_containers -.-> lab-96229{{"Eliminar elementos del mapa de C++"}} end

Crear un mapa

Cree una instancia de mapa en el archivo main.cpp incluyendo estos archivos de encabezado al principio del archivo:

#include <iostream>
#include <bits/stdc++.h>

Declare un mapa con claves y valores enteros como se muestra a continuación:

map<int, int> m;

Insertar datos en el mapa

Inserta datos aleatorios en el mapa utilizando el método insert(). El método make_pair() se puede utilizar para asignar pares clave-valor al mapa.

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

Eliminar un elemento del mapa

Utilice el método erase(x) para eliminar un elemento del mapa con la clave con un valor de x. Si el valor no existe, devuelve 0, de lo contrario 1.

int j = m.erase(5);

if(j == 1) {
    cout << "\nEl elemento del mapa con clave 5 se ha eliminado.";
} else {
    cout << "\nEl elemento del mapa con clave 5 no existe.";
}

También puede eliminar un elemento con un valor de clave que no existe en el mapa sin que el programa se detenga. Por ejemplo:

int k = m.erase(6);

if(k!= 0){
    cout << "\n\nEl elemento del mapa con clave 6 se ha eliminado\n\n";
} else {
    cout << "\n\nEl elemento del mapa con clave 6 no existe.";
}

Ejecutar el código

Para ejecutar el código, vaya al directorio que contiene el archivo main.cpp en la terminal y escriba los siguientes comandos para compilar y ejecutar:

$ g++ main.cpp -o main
$./main

Código completo

A continuación se presenta el código completo para su referencia:

#include <iostream>
#include <bits/stdc++.h>

using namespace std;

int main()
{
    cout << "\n\nBienvenido a LabEx :-)\n\n\n";
    cout << "===== Programa para demostrar el funcionamiento del método erase() en un Map (Parte 1), en CPP ===== \n\n\n";

    cout << "*** El método erase(x) elimina el elemento del mapa con clave x y devuelve 1 si se encuentra, de lo contrario devuelve 0. *** \n\n";

    // Declaración del mapa (Mapa con clave y valor ambos enteros)
    map<int, int> m;

    // Llenando los elementos utilizando el método insert()
    cout << "\n\nLlenando el Mapa con pares clave-valor de enteros en orden aleatorio."; //El Mapa los almacena automáticamente en orden ascendente de claves

    //make_pair() se utiliza para insertar un par clave-valor en el mapa
    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\nEl número de elementos en el Mapa es: " << m.size();

    cout << "\n\nLos elementos del Mapa m son: ";

    map<int, int>::iterator i;
    int j = 0;

    for (i = m.begin(); i!= m.end(); i++)
    {
        cout << "( " << i->first << ", " << i->second << " ) ";
    }

    //Buscando el elemento del mapa con clave 5
    j = m.erase(5);

    if (j == 1)
    {
        cout << "\n\nEl elemento del mapa con clave 5 se ha eliminado.";
    }
    else
    {
        cout << "\n\nEl elemento del mapa con clave 5 no existe.";
    }

    cout << "\n\nEl número de elementos en el Mapa pasa a ser: " << m.size();

    cout << "\n\nLos elementos del Mapa m después de la operación erase son:  ";

    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\nEl elemento del mapa con clave 6 se ha eliminado\n\n";
    }

    else
    {
        cout << "\n\nEl elemento del mapa con clave 6 no existe.";
    }

    cout << "\n\n\n";

    return 0;
}

Resumen

En este laboratorio, has comenzado creando un mapa y luego lo has llenado con datos. Luego, has aprendido cómo utilizar el método erase() para eliminar elementos del mapa utilizando sus claves. Esperamos que los ejemplos anteriores te ayuden a entender cómo eliminar elementos de un mapa en la STL de C++.