Elemente entfernen
Teil des Abschnitts Logic & Flow der Rust-Journey von Coddy — Lektion 13 von 66.
Manchmal müssen Sie Elemente aus einem Vector entfernen, nicht nur hinzufügen. Rust bietet zwei Hauptmethoden zum Entfernen von Elementen, die jeweils für unterschiedliche Situationen konzipiert sind.
Die .pop() Methode 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, gibt Some(40) zurück
// numbers ist jetzt [10, 20, 30]Beachten Sie, dass .pop() ein Option zurückgibt – es liefert Some(value), wenn ein Element zum Entfernen vorhanden war, oder None, wenn der Vektor bereits leer war. Dies macht die Verwendung selbst bei leeren Vektoren sicher.
Die .remove()-Methode 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 ist jetzt ["apple", "cherry"]Wenn Sie .remove() verwenden, verschieben sich alle Elemente nach dem entfernten Index nach links, um die Lücke zu füllen. Diese Operation kann bei großen Vektoren langsamer sein, wenn am Anfang oder in der Mitte entfernt wird, da viele Elemente verschoben werden müssen.
Beide Methoden erfordern, dass der Vektor veränderbar (mutable) ist, da sie dessen Inhalt modifizieren. Wählen Sie .pop(), wenn Sie ein Element am Ende entfernen möchten, und .remove(), wenn Sie ein Element an einer bestimmten Position entfernen müssen.
Aufgabe
EinfachSie erhalten zwei Eingaben: erstens eine durch Kommas getrennte Liste von Zahlen und zweitens einen zu entfernenden Index. Lesen Sie beide Eingaben ein, erstellen Sie einen Vektor aus den Zahlen, entfernen Sie das Element am angegebenen Index und geben Sie die verbleibenden Elemente in separaten Zeilen aus.
Anforderungen:
- Lesen Sie die erste Eingabe ein, die durch Kommas getrennte Zahlen enthält (z. B.
10,20,30,40,50) - Teilen Sie die Zeichenfolge nach Kommas auf und konvertieren Sie jede Zahl in eine Ganzzahl
- Erstellen Sie einen veränderbaren Vektor aus diesen Zahlen
- Lesen Sie die zweite Eingabe ein und konvertieren Sie diese in eine Ganzzahl, die den Index darstellt
- Verwenden Sie
.remove(), um das Element an diesem Index zu entfernen - Geben Sie 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 darstellt
Ausgabe: Geben Sie jedes verbleibende Element des Vektors in einer separaten Zeile aus
Spickzettel
Rust bietet zwei Hauptmethoden zum Entfernen von Elementen aus Vektoren:
Die Methode .pop() entfernt das letzte Element und gibt es zurück:
let mut numbers = vec![10, 20, 30, 40];
let last = numbers.pop(); // entfernt 40, gibt Some(40) zurück
// numbers ist jetzt [10, 20, 30].pop() gibt einen Option-Typ zurück – Some(value), wenn ein Element entfernt wurde, oder None, wenn der Vektor leer war.
Die Methode .remove() entfernt ein Element an einem bestimmten Index und gibt es zurück:
let mut fruits = vec!["apple", "banana", "cherry"];
let removed = fruits.remove(1); // entfernt "banana"
// fruits ist jetzt ["apple", "cherry"]Bei der Verwendung von .remove() verschieben sich alle Elemente nach dem entfernten Index nach links, um die Lücke zu füllen.
Beide Methoden erfordern, dass der Vektor veränderbar (mutable) ist. Verwenden Sie .pop() zum Entfernen am Ende und .remove() zum Entfernen an einer bestimmten Position.
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 zu entfernenden Index ein
let mut index_input = String::new();
io::stdin().read_line(&mut index_input).expect("Failed to read line");
// TODO: Schreibe deinen Code unten
// 1. Trenne numbers_input nach Kommas und konvertiere sie in Ganzzahlen
// 2. Erstelle einen veränderbaren Vektor aus diesen Zahlen
// 3. Konvertiere index_input in eine Ganzzahl
// 4. Entferne das Element am angegebenen Index
// 5. Gib jedes verbleibende Element in einer separaten Zeile aus
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logic & Flow
1Fortgeschrittener Kontrollfluss
Der 'match'-AusdruckAbgleichen mehrerer WerteBereiche abgleichenDer 'if let'-AusdruckSchleifen als AusdrückeRückblick – Einfacher Befehls-Parser4Daten gruppieren mit Structs
Was ist ein Struct?Übersicht über StructsZugriff auf Struct-FelderVeränderbare StructsStructs als FunktionsparameterTupel-StructsZusammenfassung – Ein Buch-Struct erstellen2Einführung in Vektoren
Was ist ein Vektor?Einen Vektor erstellenElemente mit push hinzufügenZugriff auf Vektor-ElementeÜber einen Vektor iterierenVeränderliche IterationElemente entfernenZusammenfassung – Einfacher Score-Tracker5Schlüssel-Wert-Paare mit Hash Maps
Was ist eine Hash Map?Erstellen einer Hash MapEinfügen von Schlüssel-Wert-PaarenZugreifen auf WerteIterieren über eine Hash MapAktualisieren eines WertesEntfernen eines PaaresZusammenfassung – Wortzähler8Projekt: Einfaches Artikelinventar
Projekt-SetupEinen Artikel hinzufügenLagerbestand prüfenEinen Artikel verkaufenAlles zusammenfügen11Abschluss-Herausforderungen
Wiederholung - Einzigartige ElementeWiederholung - Benutzerprofil-ValidatorWiederholung - Noten-Zusammenfassung3Kommandozeilen-To-Do-Liste
Projekt-SetupEine Aufgabe hinzufügenAlle Aufgaben anzeigenEine Aufgabe entfernenFinaler Code