Rimuovere elementi
Fa parte della sezione Logica e flusso del percorso C++ di Coddy. Lezione 16 di 56.
A volte devi rimuovere elementi da un vector quando non ti servono più. Per usare il metodo .erase() con i vector, devi usare un iteratore. Puoi combinare std::find() con .erase() per rimuovere elementi in base al valore.
Ecco come rimuovere un elemento da un vettore:
std::vector<int> numbers = {10, 20, 30, 40};
auto it = std::find(numbers.begin(), numbers.end(), 20);
if (it != numbers.end()) {
numbers.erase(it); // Rimuove l'elemento nella posizione dell'iteratore
}Dopo aver chiamato erase(), l’elemento in quella posizione viene rimosso e tutti gli elementi successivi si spostano verso il basso. Se provi a trovare e cancellare un elemento che non esiste, find() restituirà end() e verificare questa condizione previene gli errori.
Questo schema rende la rimozione degli elementi sicura e prevedibile. È particolarmente utile per gestire collezioni dinamiche in cui devi rimuovere elementi specifici in base all'input dell'utente o alla logica del programma. Ricorda di controllare sempre che l'iteratore sia valido prima di cancellare.
Sfida
FacileCrea un programma che dimostri la rimozione di elementi da un std::vector usando il metodo .erase() combinato con std::find(). Questa sfida metterà alla prova la tua comprensione di come rimuovere in modo sicuro elementi specifici da un vector e osservare i risultati.
Verranno forniti i seguenti input:
- Un intero
nche rappresenta il numero di elementi da aggiungere inizialmente al vector - Poi
ninteri da inserire nel vector - Un intero
mche rappresenta il numero di elementi da rimuovere - Poi
minteri che rappresentano gli elementi da rimuovere dal vector
Il tuo programma dovrebbe:
- Creare un
std::vector<int>vuoto - Leggere il numero di elementi da aggiungere e inserirli nel vector usando
.push_back() - Stampare la dimensione iniziale del vector dopo tutti gli inserimenti
- Leggere il numero di elementi da rimuovere
- Per ogni elemento da rimuovere, usare
std::find()per individuarlo, quindi usare.erase()per rimuoverlo se trovato - Dopo ogni tentativo di rimozione, stampare la dimensione corrente del vector
- Infine, iterare sugli elementi rimanenti nel vector e stamparli nell'ordine in cui si trovano
Usa il seguente formato di output esatto:
Dimensione iniziale del vector:
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() richiede un iteratore, quindi devi prima usare std::find() per individuare l'elemento. Controlla sempre se l'elemento è stato trovato prima di rimuoverlo. Usa un ciclo for basato su intervallo per stampare gli elementi rimanenti nell'ordine in cui si trovano.
Provalo tu
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
// Lee la cantidad de elementos que se van a añadir
int n;
cin >> n;
// Crea un vector vacío
vector<int> myVector;
// Lee e inserta n elementos
for (int i = 0; i < n; i++) {
int element;
cin >> element;
// Inserta el elemento en el vector
}
// Lee la cantidad de elementos que se van a eliminar
int m;
cin >> m;
// TODO: Escribe tu código a continuación
// 1. Imprime el tamaño inicial del vector
// 2. Para cada elemento que se va a eliminar, búscalo, usa .erase() e imprime el tamaño después de cada eliminación
// 3. Imprime los elementos restantes del vector
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àEsercitati da solo: Compilatore C++ online