Eliminar elementos
Parte de la sección Lógica y Flujo del Journey de C++ de Coddy — lección 38 de 56.
A veces necesitas eliminar elementos de un conjunto cuando ya no son necesarios. El método .erase() te permite eliminar un elemento específico proporcionando su valor.
Aquí tienes cómo eliminar un elemento de un conjunto:
std::set<int> numbers = {10, 20, 30, 40};
numbers.erase(20); // Elimina el elemento 20Después de llamar a .erase(20), el conjunto solo contendrá {10, 30, 40}. Si intentas borrar un elemento que no existe en el conjunto, no sucede nada: el conjunto permanece sin cambios y no se produce ningún error.
Esto hace que .erase() sea seguro de usar incluso cuando no estés seguro de que el elemento exista. Es particularmente útil para mantener colecciones limpias donde necesites eliminar elementos específicos basados en la entrada del usuario o la lógica del programa.
Desafío
FácilCrea un programa que demuestre cómo eliminar elementos de un std::set utilizando el método .erase(). Este desafío pondrá a prueba tu comprensión sobre cómo eliminar de forma segura elementos específicos de un conjunto y observar los resultados.
Se proporcionarán las siguientes entradas:
- Un número entero
nque representa la cantidad de elementos que se añadirán inicialmente al conjunto - Luego,
nnúmeros enteros para ser insertados en el conjunto - Un número entero
mque representa la cantidad de elementos a eliminar - Luego,
mnúmeros enteros que representan los elementos a eliminar del conjunto
Tu programa debe:
- Crear un
std::set<int>vacío - Leer el número de elementos a añadir e insertarlos en el conjunto usando
.insert() - Imprimir el tamaño inicial del conjunto después de todas las inserciones
- Leer el número de elementos a eliminar
- Para cada elemento a eliminar, usar
.erase()para intentar la eliminación - Después de cada intento de eliminación, imprimir el tamaño actual del conjunto
- Finalmente, iterar a través de los elementos restantes en el conjunto e imprimirlos en orden ascendente
Utiliza exactamente el siguiente formato de salida:
Tamaño inicial del conjunto:
Initial size: [size]Después de cada intento de eliminación:
After removing [number]: size = [current_size]Elementos finales restantes:
Remaining elements: [element1] [element2] [element3] ...Recuerda que .erase() maneja de forma segura los intentos de eliminar elementos que no existen en el conjunto: el conjunto permanece sin cambios y no ocurre ningún error. Utiliza un bucle for basado en rangos para imprimir los elementos restantes, y se mostrarán automáticamente en orden ascendente ya que los conjuntos mantienen sus elementos en una secuencia ordenada.
Hoja de referencia
Usa .erase() para eliminar un elemento específico de un conjunto proporcionando su valor:
std::set<int> numbers = {10, 20, 30, 40};
numbers.erase(20); // Elimina el elemento 20Si intentas eliminar un elemento que no existe en el conjunto, no sucede nada: el conjunto permanece sin cambios y no ocurre ningún error, lo que hace que .erase() sea seguro de usar.
Pruébalo tú mismo
#include <iostream>
#include <set>
using namespace std;
int main() {
// Leer el número de elementos a añadir
int n;
cin >> n;
// Crear un conjunto vacío
set<int> mySet;
// Leer e insertar n elementos
for (int i = 0; i < n; i++) {
int element;
cin >> element;
// Insertar elemento en el conjunto
}
// Leer el número de elementos a eliminar
int m;
cin >> m;
// TODO: Escribe tu código abajo
// 1. Imprimir el tamaño inicial del conjunto
// 2. Para cada elemento a eliminar, usa .erase() e imprime el tamaño después de cada eliminación
// 3. Imprimir los elementos restantes en el conjunto
return 0;
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y Flujo
1Punteros y memoria
¿Qué es un puntero?Operador de direcciónOperador de desreferenciaPunteros nulosPunteros y arraysMemoria dinámica con 'new'Liberar memoria con 'delete'Resumen: Práctica de punteros2Vectores (Arrays dinámicos)
Introducción a std::vectorCreación de un VectorAgregar elementosAcceder a los elementosTamaño del VectorIterar con un bucle ForBucle For basado en rangosEliminar elementosResumen - Operaciones con Vectores5Proyecto: Herramienta de inventario
Configuración del proyectoAgregar y actualizar artículos3Proyecto: Herramienta de lista de tareas
Descripción general del proyectoAñadir una tarea6Conjuntos (Elementos únicos)
Introducción a std::setCrear conjunto y añadir elementosComprobar elementosEliminar elementosIterar sobre un conjuntoResumen - Números únicos