C++ STL Método Erase em Set

C++Beginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá sobre o funcionamento de um Multiset e sua implementação na linguagem de programação C++. Você aprenderá especificamente como usar o método erase() em um Set ou Multiset para deletar elementos.

Criar o arquivo de código C++

Use qualquer editor de texto de sua preferência para criar um novo arquivo de código C++ chamado main.cpp no diretório do projeto ~/project.

cd ~/project
touch main.cpp

Escrever o código C++

Insira o seguinte código no arquivo main.cpp. Os comentários explicam o código.

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

using namespace std;

//Função para imprimir os elementos do multiset usando um iterador
void show(multiset<int> s)
{
    //declarando um iterador para iterar através do multiset
    multiset<int>::iterator i;

    for (i = s.begin(); i != s.end(); i++)
    {
        cout << *i << "  "; //acessando os elementos do multiset usando * pois i armazena o endereço de cada elemento
    }

    cout << endl;
}

int main()
{
    cout << "\n\nBem-vindo ao Lab do Método erase() de Set da STL\n\n\n";
    cout << " =====  Programa para demonstrar o funcionamento de um Multiset, em CPP  ===== \n\n\n\n";

    cout << "*** Multisets são semelhantes a sets, com a exceção de que múltiplos elementos podem ter os mesmos valores. *** \n\n";

    //Declaração do Set (Set de inteiros)
    multiset<int> s;

    //Preenchendo os elementos usando o método insert().
    cout << "\n\nPreenchendo o Multiset com inteiros em ordem aleatória."; //Multiset automaticamente os armazena em ordem

    s.insert(5);
    s.insert(39);
    s.insert(5);
    s.insert(82);
    s.insert(39);
    s.insert(54);

    cout << "\n\nO número de elementos no Multiset é: " << s.size();

    cout << "\n\nOs elementos do Multiset são: ";
    show(s);

    multiset<int>::iterator it;

    //Deletando todos os elementos do set que são menores que 54
    s.erase(s.begin(), s.find(54));

    cout << "\n\nApós deletar todos os elementos que são menores que 54, o Multiset se torna: ";

    for (it = s.begin(); it != s.end(); it++)
    {
        cout << " " << *it;
    }

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

    return 0;
}

Compilar e executar o código C++

No terminal, compile o arquivo main.cpp usando o comando g++, e então execute o arquivo compilado.

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

Você deve ver a seguinte saída:

Welcome to STL Set erase() Method Lab


 =====  Program to demonstrate the working of a Multiset, in CPP  =====



*** Multisets are similar to set, with an exception that multiple elements can have same values. ***


Filling the Multiset with integers in random order.
The number of elements in the Multiset are: 6

The elements of the Multiset are: 5  5  39  39  54  82

After deleting all the elements that are less than 54, the Multiset becomes :  54  82

Revisar o código

Reserve um tempo para revisar o código e certifique-se de que você entende como o método erase() é usado para deletar elementos do Multiset.

//Deleting all the elements of the set that are less than 54
s.erase(s.begin(), s.find(54));

Este código usa o método erase() para deletar todos os elementos no Multiset desde o início até, mas não incluindo, o elemento com o valor 54. Assim, o Multiset resultante contém apenas os valores 54 e 82.

Resumo

Neste laboratório, você aprendeu como usar o método erase() em um Set ou Multiset C++ para deletar elementos. Você também aprendeu como iterar através de um multiset usando um iterador e imprimir os elementos usando o método show(). Isso é útil ao depurar ou verificar o conteúdo de estruturas de dados complexas como Sets e Multisets.