Menu
CoddyTech

Elemente entfernen

Teil des Abschnitts Logik & Kontrollfluss der Rust-Journey von Coddy. Lektion 13 von 66.

Manchmal musst du Elemente aus einem Vektor entfernen und nicht nur hinzufügen. Rust bietet zwei Hauptmethoden zum Entfernen von Elementen, die jeweils für unterschiedliche Situationen gedacht sind.

Die Methode .pop() entfernt das letzte Element aus dem Vektor und gibt es zurück:

let mut numbers = vec![10, 20, 30, 40];
let last = numbers.pop(); // entfernt 40 und gibt Some(40) zurück
// numbers enthält jetzt [10, 20, 30]

Beachte, dass .pop() ein Option zurückgibt – es liefert Some(value), wenn ein Element entfernt werden konnte, oder None, wenn der Vektor bereits leer war. Dadurch kann es auch bei leeren Vektoren sicher verwendet werden.

Die Methode .remove() entfernt ein Element an einem bestimmten Index und gibt dieses Element zurück:

let mut fruits = vec!["apple", "banana", "cherry"];
let removed = fruits.remove(1); // entfernt "banana"
// fruits enthält jetzt ["apple", "cherry"]

Wenn du .remove() verwendest, rücken alle Elemente nach dem entfernten Index nach links, um die Lücke zu füllen. Bei großen Vektoren kann dieser Vorgang langsamer sein, wenn du ein Element am Anfang oder in der Mitte entfernst, da viele Elemente verschoben werden müssen.

Beide Methoden setzen voraus, dass der Vektor veränderbar ist, da sie seinen Inhalt ändern. Verwende .pop(), wenn du ein Element am Ende entfernen möchtest, und .remove(), wenn du ein Element an einer bestimmten Position entfernen musst.

challenge icon

Aufgabe

Einfach

Du erhältst zwei Eingaben: zuerst eine durch Kommas getrennte Liste von Zahlen und danach einen zu entfernenden Index. Der Startcode liest bereits beide Eingaben ein und wandelt die Zahlen in einen veränderbaren Vektor numbers um. Entferne das Element am angegebenen Index und gib die verbleibenden Elemente in separaten Zeilen aus.

Anforderungen:

  • Wandle die zweite Eingabe (index_input) in eine Ganzzahl um, die den Index darstellt
  • Verwende .remove(), um das Element an diesem Index zu entfernen
  • Gib jedes verbleibende Element in einer separaten Zeile aus

Eingabe:

  • Erste Zeile: Durch Kommas getrennte Ganzzahlen (z. B. 10,20,30,40,50)
  • Zweite Zeile: Eine Ganzzahl, die den zu entfernenden Index angibt

Ausgabe: Gib jedes verbleibende Element des Vektors in einer separaten Zeile aus

Probier es selbst

use std::io;

fn main() {
    // Lies die durch Kommas getrennten Zahlen ein
    let mut numbers_input = String::new();
    io::stdin().read_line(&mut numbers_input).expect("Failed to read line");
    
    // Lies den Index ein, an dem ein Element entfernt werden soll
    let mut index_input = String::new();
    io::stdin().read_line(&mut index_input).expect("Failed to read line");
    
    // Wandelt "10,20,30" in einen Vektor um: an den Kommas aufteilen, jeden Teil als Zahl einlesen und in einem Vec sammeln
    let mut numbers: Vec<i32> = numbers_input
        .trim()
        .split(',')
        .map(|s| s.trim().parse().unwrap())
        .collect();
    
    // TODO: Schreibe deinen Code unten
    // 1. Wandle index_input in eine Ganzzahl um
    // 2. Entferne das Element am angegebenen Index
    // 3. Gib jedes verbleibende Element in einer eigenen Zeile aus
    
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Kontrollfluss

Übe selbstständig: Online-Rust-Compiler