Método erase() del Conjunto STL 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á sobre el funcionamiento de un Multiset y su implementación en el lenguaje de programación C++. Aprenderá específicamente cómo usar el método erase() en un Set o Multiset para eliminar elementos.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL cpp(("C++")) -.-> cpp/BasicsGroup(["Basics"]) cpp(("C++")) -.-> cpp/IOandFileHandlingGroup(["I/O and File Handling"]) cpp(("C++")) -.-> cpp/StandardLibraryGroup(["Standard Library"]) cpp(("C++")) -.-> cpp/SyntaxandStyleGroup(["Syntax and Style"]) cpp/BasicsGroup -.-> cpp/operators("Operators") cpp/BasicsGroup -.-> cpp/strings("Strings") cpp/IOandFileHandlingGroup -.-> cpp/output("Output") cpp/IOandFileHandlingGroup -.-> cpp/files("Files") cpp/StandardLibraryGroup -.-> cpp/standard_containers("Standard Containers") cpp/SyntaxandStyleGroup -.-> cpp/code_formatting("Code Formatting") subgraph Lab Skills cpp/operators -.-> lab-96235{{"Método erase() del Conjunto STL de C++"}} cpp/strings -.-> lab-96235{{"Método erase() del Conjunto STL de C++"}} cpp/output -.-> lab-96235{{"Método erase() del Conjunto STL de C++"}} cpp/files -.-> lab-96235{{"Método erase() del Conjunto STL de C++"}} cpp/standard_containers -.-> lab-96235{{"Método erase() del Conjunto STL de C++"}} cpp/code_formatting -.-> lab-96235{{"Método erase() del Conjunto STL de C++"}} end

Crea el archivo de código C++

Utilice cualquier editor de texto de su elección para crear un nuevo archivo de código C++ llamado main.cpp en el directorio del proyecto ~/project.

cd ~/project
touch main.cpp

Escribe el código C++

Ingrese el siguiente código en el archivo main.cpp. Los comentarios explican el código.

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

using namespace std;

//Función para imprimir los elementos del multiconjunto usando un iterador
void show(multiset<int> s)
{
    //Declarando un iterador para iterar a través del multiconjunto
    multiset<int>::iterator i;

    for (i = s.begin(); i!= s.end(); i++)
    {
        cout << *i << "  "; //Accediendo a los elementos del multiconjunto usando * ya que i almacena la dirección de cada elemento
    }

    cout << endl;
}

int main()
{
    cout << "\n\nBienvenido al Laboratorio del Método erase() de STL Set\n\n\n";
    cout << " =====  Programa para demostrar el funcionamiento de un Multiconjunto, en CPP  ===== \n\n\n\n";

    cout << "*** Los multiconjuntos son similares a los conjuntos, con la excepción de que múltiples elementos pueden tener los mismos valores. *** \n\n";

    //Declaración del multiconjunto (Conjunto de enteros)
    multiset<int> s;

    //Llenando los elementos usando el método insert()
    cout << "\n\nLlenando el Multiconjunto con enteros en orden aleatorio."; //El multiconjunto los almacena automáticamente en orden

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

    cout << "\n\nEl número de elementos en el Multiconjunto es: " << s.size();

    cout << "\n\nLos elementos del Multiconjunto son: ";
    show(s);

    multiset<int>::iterator it;

    //Eliminando todos los elementos del conjunto que son menores que 54
    s.erase(s.begin(), s.find(54));

    cout << "\n\nDespués de eliminar todos los elementos que son menores que 54, el Multiconjunto se convierte en : ";

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

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

    return 0;
}

Compila y ejecuta el código C++

En la terminal, compila el archivo main.cpp usando el comando g++, luego ejecuta el archivo compilado.

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

Deberías ver la siguiente salida:

Bienvenido al Laboratorio del Método erase() de STL Set


 =====  Programa para demostrar el funcionamiento de un Multiconjunto, en CPP  =====



*** Los multiconjuntos son similares a los conjuntos, con la excepción de que múltiples elementos pueden tener los mismos valores. ***


Llenando el Multiconjunto con enteros en orden aleatorio.
El número de elementos en el Multiconjunto es: 6

Los elementos del Multiconjunto son: 5  5  39  39  54  82

Después de eliminar todos los elementos que son menores que 54, el Multiconjunto se convierte en :  54  82

Revisa el código

Tómate el tiempo para revisar el código y asegúrate de entender cómo se utiliza el método erase() para eliminar elementos del Multiconjunto.

//Eliminando todos los elementos del conjunto que son menores que 54
s.erase(s.begin(), s.find(54));

Este código utiliza el método erase() para eliminar todos los elementos del Multiconjunto desde el principio hasta, pero sin incluir, el elemento con el valor 54. Por lo tanto, el Multiconjunto resultante contiene solo los valores 54 y 82.

Resumen

En este laboratorio, aprendiste cómo usar el método erase() en un Conjunto o Multiconjunto de C++ para eliminar elementos. También aprendiste cómo iterar a través de un multiconjunto usando un iterador y cómo imprimir los elementos usando el método show(). Esto es útil al depurar o comprobar el contenido de estructuras de datos complejas como Conjuntos y Multiconjuntos.