Rimuovere elementi
Fa parte della sezione Logica e flusso del percorso C++ di Coddy. Lezione 38 di 56.
A volte devi rimuovere elementi da un insieme quando non servono più. Il metodo .erase() ti consente di rimuovere un elemento specifico fornendone il valore.
Ecco come rimuovere un elemento da un insieme:
std::set<int> numbers = {10, 20, 30, 40};
numbers.erase(20); // Rimuove l'elemento 20Dopo aver chiamato .erase(20), l'insieme conterrà solo {10, 30, 40}. Se provi a rimuovere un elemento che non esiste nell'insieme, non succede nulla: l'insieme rimane invariato e non si verifica alcun errore.
Questo rende .erase() sicuro da usare anche quando non sei certo che l'elemento esista. È particolarmente utile per mantenere raccolte ordinate quando devi rimuovere elementi specifici in base all'input dell'utente o alla logica del programma.
Sfida
FacileCrea un programma che dimostri come rimuovere elementi da un std::set usando il metodo .erase(). Questa sfida metterà alla prova la tua comprensione di come rimuovere in modo sicuro elementi specifici da un insieme e osservarne i risultati.
Verranno forniti i seguenti input:
- Un intero
nche rappresenta il numero di elementi da aggiungere inizialmente all’insieme - Poi
ninteri da inserire nell’insieme - Un intero
mche rappresenta il numero di elementi da rimuovere - Poi
minteri che rappresentano gli elementi da rimuovere dall’insieme
Il programma dovrebbe:
- Creare un
std::set<int>vuoto - Leggere il numero di elementi da aggiungere e inserirli nell’insieme usando
.insert() - Stampare la dimensione iniziale dell’insieme dopo tutti gli inserimenti
- Leggere il numero di elementi da rimuovere
- Per ogni elemento da rimuovere, usare
.erase()per tentare di rimuoverlo - Dopo ogni tentativo di rimozione, stampare la dimensione corrente dell’insieme
- Infine, scorrere gli elementi rimanenti nell’insieme e stamparli in ordine crescente
Usa esattamente il seguente formato di output:
Dimensione iniziale dell’insieme:
Initial size: [size]Dopo ogni tentativo di rimozione:
After removing [number]: size = [current_size]Elementi rimanenti finali:
Remaining elements: [element1] [element2] [element3] ...Ricorda che .erase() gestisce in modo sicuro i tentativi di rimuovere elementi che non esistono nell’insieme: l’insieme rimane invariato e non si verifica alcun errore. Usa un ciclo for basato su intervallo per stampare gli elementi rimanenti: verranno visualizzati automaticamente in ordine crescente, poiché gli insiemi mantengono gli elementi in sequenza ordinata.
Provalo tu
#include <iostream>
#include <set>
using namespace std;
int main() {
// Leggi il numero di elementi da aggiungere
int n;
cin >> n;
// Crea un insieme vuoto
set<int> mySet;
// Leggi e inserisci n elementi
for (int i = 0; i < n; i++) {
int element;
cin >> element;
// Inserisci l'elemento nell'insieme
}
// Leggi il numero di elementi da rimuovere
int m;
cin >> m;
// TODO: Scrivi il tuo codice qui sotto
// 1. Stampa la dimensione iniziale dell'insieme
// 2. Per ogni elemento da rimuovere, usa .erase() e stampa la dimensione dopo ogni rimozione
// 3. Stampa gli elementi rimasti nell'insieme
return 0;
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Puntatori e memoria
Che cos'è un puntatore?Operatore indirizzoOperatore di dereferenziazionePuntatori nulliPuntatori e arrayMemoria dinamica con 'new'Liberare la memoria con 'delete'Riepilogo - Esercizi sui puntatori2Vettori (array dinamici)
Introduzione a std::vectorCreare un vettoreAggiungere elementiAccedere agli elementiDimensione del vettoreIterare con un ciclo forCiclo for basato su intervalloRimuovere elementiRiepilogo - Operazioni sui vettori5Progetto: strumento per l’inventario
Configurazione del progettoAggiunta e aggiornamento degli articoli3Progetto: Strumento per l’elenco delle attività
Panoramica del progettoAggiungere un’attività6Insiemi (elementi unici)
Introduzione a std::setCreare un set e aggiungere elementiVerificare la presenza di elementiRimuovere elementiIterare su un setRiepilogo - numeri uniciEsercitati da solo: Compilatore C++ online