Removendo Elementos
Parte da seção Lógica & Fluxo do Journey de Rust da Coddy. Lição 13 de 66.
Às vezes, você precisa remover elementos de um vetor, não apenas adicioná-los. Rust oferece dois métodos principais para remover elementos, cada um projetado para situações diferentes.
O método .pop() remove e retorna o último elemento do vetor:
let mut numbers = vec![10, 20, 30, 40];
let last = numbers.pop(); // remove 40 e retorna Some(40)
// numbers agora é [10, 20, 30]Observe que .pop() retorna um Option — ele fornece Some(value) se havia um elemento para remover, ou None se o vetor já estava vazio. Isso torna seguro usá-lo até mesmo em vetores vazios.
O método .remove() remove um elemento em um índice específico e retorna esse elemento:
let mut fruits = vec!["apple", "banana", "cherry"];
let removed = fruits.remove(1); // remove "banana"
// fruits agora é ["apple", "cherry"]Quando você usa .remove(), todos os elementos após o índice removido se deslocam para a esquerda para preencher o espaço. Essa operação pode ser mais lenta em vetores grandes quando a remoção é feita no início ou no meio, pois muitos elementos precisam ser movidos.
Ambos os métodos exigem que o vetor seja mutável, pois modificam seu conteúdo. Escolha .pop() quando quiser remover um elemento do final e .remove() quando precisar remover um elemento de uma posição específica.
Desafio
FácilVocê receberá duas entradas: primeiro, uma lista de números separados por vírgulas e, segundo, um índice a ser removido. O código inicial já lê as duas entradas e transforma os números em um vetor mutável numbers. Remova o elemento no índice especificado e imprima os elementos restantes em linhas separadas.
Requisitos:
- Converta a segunda entrada (
index_input) em um inteiro que represente o índice - Use
.remove()para remover o elemento nesse índice - Imprima cada elemento restante em uma linha separada
Entrada:
- Primeira linha: inteiros separados por vírgulas (por exemplo,
10,20,30,40,50) - Segunda linha: um inteiro que representa o índice a ser removido
Saída: Imprima cada elemento restante do vetor em uma linha separada
Experimente você mesmo
use std::io;
fn main() {
// Leia os números separados por vírgulas
let mut numbers_input = String::new();
io::stdin().read_line(&mut numbers_input).expect("Failed to read line");
// Leia o índice do elemento a remover
let mut index_input = String::new();
io::stdin().read_line(&mut index_input).expect("Failed to read line");
// Transforma "10,20,30" em um vetor: separa pelas vírgulas, converte cada parte em um número e reúne os resultados em um Vec
let mut numbers: Vec<i32> = numbers_input
.trim()
.split(',')
.map(|s| s.trim().parse().unwrap())
.collect();
// TODO: Escreva seu código abaixo
// 1. Converta index_input em um número inteiro
// 2. Remova o elemento no índice especificado
// 3. Imprima cada elemento restante em uma linha separada
}
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
1Fluxo de Controle Avançado
A Expressão 'match'Correspondência de Múltiplos ValoresCorrespondência de IntervalosA Expressão 'if let'Loops como ExpressõesRecapitulação - Parser de Comandos Simples4Agrupando Dados com Structs
O que é uma Struct?Visão Geral de StructsAcessando Campos de uma StructStructs MutáveisStructs como Parâmetros de FunçãoTuple StructsRecapitulação - Criando uma Struct Book2Introdução a Vetores
O que é um Vetor?Criando um VetorAdicionando Elementos com pushAcessando Elementos do VetorIterando sobre um VetorIteração MutávelRemovendo ElementosRecapitulação - Rastreador de Pontuação Básico5Pares Chave-Valor com Hash Maps
O que é um Hash Map?Criando um Hash MapInserindo Pares Chave-ValorAcessando ValoresIterando sobre um Hash MapAtualizando um ValorRemovendo um ParRecapitulação - Contador de Palavras8Projeto: Inventário Simples de Itens
Configuração do ProjetoAdicionando um ItemVerificando o EstoqueVendendo um ItemJuntando tudo3Lista de Tarefas via Linha de Comando
Configuração do ProjetoAdicionando uma TarefaVisualizando Todas as TarefasRemovendo uma TarefaCódigo FinalPratique por conta própria: Compilador de Rust online