Removendo Elementos
Parte da seção Lógica & Fluxo do Journey de C++ da Coddy — lição 38 de 56.
Às vezes, você precisa remover elementos de um conjunto quando eles não são mais necessários. O método .erase() permite que você remova um elemento específico fornecendo seu valor.
Veja como remover um elemento de um set:
std::set<int> numbers = {10, 20, 30, 40};
numbers.erase(20); // Remove o elemento 20Após chamar .erase(20), o conjunto conterá apenas {10, 30, 40}. Se você tentar apagar um elemento que não existe no conjunto, nada acontece - o conjunto permanece inalterado e nenhum erro ocorre.
Isso torna o .erase() seguro de usar mesmo quando você não tem certeza de que o elemento existe. É particularmente útil para manter coleções limpas, onde você precisa remover itens específicos com base na entrada do usuário ou na lógica do programa.
Desafio
FácilCrie um programa que demonstre a remoção de elementos de um std::set usando o método .erase(). Este desafio testará sua compreensão de como remover elementos específicos de um conjunto com segurança e observar os resultados.
As seguintes entradas serão fornecidas:
- Um número inteiro
nrepresentando o número de elementos a serem adicionados inicialmente ao conjunto - Em seguida,
nnúmeros inteiros a serem inseridos no conjunto - Um número inteiro
mrepresentando o número de elementos a serem removidos - Em seguida,
mnúmeros inteiros representando os elementos a serem removidos do conjunto
Seu programa deve:
- Criar um
std::set<int>vazio - Ler o número de elementos a serem adicionados e inseri-los no conjunto usando
.insert() - Imprimir o tamanho inicial do conjunto após todas as inserções
- Ler o número de elementos a serem removidos
- Para cada elemento a ser removido, use
.erase()para tentar a remoção - Após cada tentativa de remoção, imprima o tamanho atual do conjunto
- Finalmente, itere pelos elementos restantes no conjunto e imprima-os em ordem crescente
Use o seguinte formato de saída exato:
Tamanho inicial do conjunto:
Initial size: [size]Após cada tentativa de remoção:
After removing [number]: size = [current_size]Elementos finais restantes:
Remaining elements: [element1] [element2] [element3] ...Lembre-se de que o .erase() lida com segurança com tentativas de remover elementos que não existem no conjunto - o conjunto permanece inalterado e nenhum erro ocorre. Use um loop for baseado em intervalo (range-based for loop) para imprimir os elementos restantes, e eles serão exibidos automaticamente em ordem crescente, já que os conjuntos mantêm seus elementos em sequência ordenada.
Folha de consulta
Use .erase() para remover um elemento específico de um conjunto (set) fornecendo seu valor:
std::set<int> numbers = {10, 20, 30, 40};
numbers.erase(20); // Remove o elemento 20Se você tentar apagar um elemento que não existe no conjunto, nada acontece - o conjunto permanece inalterado e nenhum erro ocorre, tornando o .erase() seguro para usar.
Experimente você mesmo
#include <iostream>
#include <set>
using namespace std;
int main() {
// Ler o número de elementos a adicionar
int n;
cin >> n;
// Criar um conjunto vazio
set<int> mySet;
// Ler e inserir n elementos
for (int i = 0; i < n; i++) {
int element;
cin >> element;
// Inserir elemento no conjunto
}
// Ler o número de elementos a remover
int m;
cin >> m;
// TODO: Escreva seu código abaixo
// 1. Imprimir o tamanho inicial do conjunto
// 2. Para cada elemento a remover, use .erase() e imprima o tamanho após cada remoção
// 3. Imprimir os elementos restantes no conjunto
return 0;
}Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica & Fluxo
1Ponteiros e Memória
O que é um Ponteiro?Operador de EndereçoOperador de DesreferenciaçãoPonteiros NulosPonteiros e ArraysMemória Dinâmica com 'new'Liberando Memória com 'delete'Recapitulação - Prática com Ponteiros2Vetores (Arrays Dinâmicos)
Introdução ao std::vectorCriando um VetorAdicionando ElementosAcessando ElementosTamanho do VetorIterando com um Loop ForLoop For Baseado em IntervaloRemovendo ElementosRecapitulação - Operações com Vetores3Projeto: Ferramenta de Lista de Tarefas
Visão Geral do ProjetoAdicionando uma Tarefa6Conjuntos (Elementos Únicos)
Apresentando o std::setCriar Conjunto e Adicionar ElementosVerificando ElementosRemovendo ElementosIterando sobre um ConjuntoRecapitulação - Números Únicos