Remover Elementos de um Map em C++

C++Beginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como usar o método erase() para remover elementos em um mapa (map) na STL C++. O mapa é um contêiner que armazena dados em pares chave-valor (key-value pair).

Criar um Map

Crie uma instância de mapa no arquivo main.cpp, incluindo estes arquivos de cabeçalho (header files) no topo do arquivo:

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

Declare um mapa com chaves e valores inteiros da seguinte forma:

map<int, int> m;

Inserir dados no Map

Insira dados aleatórios no mapa usando o método insert(). O método make_pair() pode ser usado para atribuir pares chave-valor (key-value pairs) ao 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));

Remover um Elemento do Map

Use o método erase(x) para remover um elemento do mapa com a chave de valor x. Se o valor não existir, ele retorna 0, caso contrário, retorna 1.

int j = m.erase(5);

if(j == 1) {
    cout << "\nO elemento do Mapa com a chave 5 foi deletado.";
} else {
    cout << "\nO elemento do Mapa com a chave 5 não existe.";
}

Você também pode remover um elemento com o valor da chave que não existe no mapa sem que o programa trave. Por exemplo:

int k = m.erase(6);

if(k != 0){
    cout << "\n\nO elemento do Mapa com a chave 6 foi deletado\n\n";
} else {
    cout << "\n\nO elemento do Mapa com a chave 6 não existe.";
}

Executar o código

Para executar o código, navegue até o diretório que contém o arquivo main.cpp no terminal e insira os seguintes comandos para compilar e executar:

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

Código completo

Abaixo está o código completo para sua referência:

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

using namespace std;

int main()
{
    cout << "\n\nBem-vindo ao LabEx :-)\n\n\n";
    cout << "===== Programa para demonstrar o funcionamento do método erase() em um Map (Parte 1), em CPP ===== \n\n\n";

    cout << "*** O método erase(x) deleta o elemento do mapa com a chave x e retorna 1 se encontrado, caso contrário, retorna 0. *** \n\n";

    // Declaração do Map (Map com chave e valor como inteiros)
    map<int, int> m;

    // Preenchendo os elementos usando o método insert().
    cout << "\n\nPreenchendo o Map com pares chave-valor de inteiros em ordem aleatória."; //O Map os armazena automaticamente em ordem crescente de chaves

    //make_pair() é usado para inserir um par chave-valor no 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\nO número de elementos no Map é: " << m.size();

    cout << "\n\nOs elementos do Map m são: ";

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

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

    //Encontrando o elemento do map com a chave 5
    j = m.erase(5);

    if (j == 1)
    {
        cout << "\n\nO elemento do Map com a chave 5 foi deletado.";
    }
    else
    {
        cout << "\n\nO elemento do Map com a chave 5 não existe.";
    }

    cout << "\n\nO número de elementos no Map se torna: " << m.size();

    cout << "\n\nOs elementos do Map m após a operação erase são:  ";

    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\nO elemento do Map com a chave 6 foi deletado\n\n";
    }

    else
    {
        cout << "\n\nO elemento do Map com a chave 6 não existe.";
    }

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

    return 0;
}

Resumo

Neste laboratório, você começou criando um mapa e, em seguida, preenchendo-o com dados. Depois, você aprendeu a usar o método erase() para remover elementos do mapa usando suas chaves. Esperamos que os exemplos acima ajudem você a entender como remover elementos de um mapa na C++ STL.