Menu
Coddy logo textTech

Weitere Slices

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

Obwohl String-Slices sehr nützlich sind, ist das Slicing nicht auf Strings beschränkt. Rusts Slice-Konzept erstreckt sich auf jede Folge von Elementen und ist damit ein leistungsfähiges Werkzeug für die Arbeit mit Sammlungen, ohne deren Besitz zu übernehmen.

Du kannst Slices aus Arrays und Vektoren mit derselben Syntax erstellen, die du für Strings gelernt hast. Wenn du beispielsweise ein Array mit Zahlen hast, kannst du einen Slice erstellen, der auf einen Teil oder das gesamte Array verweist:

let numbers = [1, 2, 3, 4, 5];
let slice: &[i32] = &numbers[1..4]; // Das ergibt [2, 3, 4]
let full_slice: &[i32] = &numbers;  // Dies referenziert das gesamte Array

Dasselbe Prinzip funktioniert mit Vektoren. Du kannst aus Vektoren Slices erstellen, um mit Teilen der Daten zu arbeiten, ohne sie zu verschieben oder zu kopieren:

let mut vec = vec![10, 20, 30, 40];
let vec_slice: &[i32] = &vec[0..2]; // Das gibt uns [10, 20]
challenge icon

Aufgabe

Einfach

Du erhältst drei Eingaben. Die erste Eingabe ist eine durch Kommas getrennte Liste von Zahlen. Die zweite Eingabe besteht aus zwei durch ein Leerzeichen getrennten Zahlen, die den Start- und Endindex zum Erstellen eines Slices darstellen. Die dritte Eingabe ist eine einzelne Zahl, die einen Index für den Zugriff auf das Slice darstellt.

Erstelle aus den durch Kommas getrennten Zahlen einen Vektor und erstelle anschließend mithilfe des angegebenen Bereichs ein Slice. Greife auf das Element am angegebenen Index im Slice zu und gib es aus.

Anforderungen:

  • Lies die erste Eingabe (durch Kommas getrennte Zahlen) ein und entferne überflüssige Leerzeichen
  • Teile die Eingabe an den Kommas auf und wandle jede Zahl in i32 um
  • Erstelle aus diesen Zahlen einen Vektor
  • Lies die zweite Eingabe (zwei durch ein Leerzeichen getrennte Zahlen) ein und entferne überflüssige Leerzeichen
  • Teile die zweite Eingabe am Leerzeichen auf, um die Start- und Endindizes zu erhalten
  • Wandle beide Indizes in usize um
  • Erstelle mithilfe der Bereichssyntax &vec[start..end] ein Slice aus dem Vektor
  • Lies die dritte Eingabe (den Index für den Zugriff) ein und entferne überflüssige Leerzeichen
  • Wandle den Index in usize um
  • Greife auf das Element am angegebenen Index im Slice zu
  • Gib das abgerufene Element aus

Eingabe:

  • Erste Zeile: Durch Kommas getrennte Zahlen (z. B. 10,20,30,40,50)
  • Zweite Zeile: Zwei durch ein Leerzeichen getrennte Zahlen (z. B. 1 4)
  • Dritte Zeile: Eine Indexzahl (z. B. 2)

Ausgabe:

  • Das Element am angegebenen Index im Slice

Probier es selbst

use std::io::{self, BufRead};

fn main() {
    let stdin = io::stdin();
    let mut lines = stdin.lock().lines();
    
    // Lies die erste Eingabe (kommagetrennte Zahlen)
    let first_input = lines.next().unwrap().unwrap();
    
    // Lies die zweite Eingabe (Start- und Endindizes)
    let second_input = lines.next().unwrap().unwrap();
    
    // Lies die dritte Eingabe (Index zum Zugriff)
    let third_input = lines.next().unwrap().unwrap();
    
    // TODO: Schreibe deinen Code darunter
    // Parse die kommagetrennten Zahlen und erstelle einen Vektor
    // Parse die Start- und Endindizes
    // Erstelle einen Slice aus dem Vektor
    // Greife auf das Element am angegebenen Index aus dem Slice zu
    
    // Gib das Ergebnis aus
    // println!("{}", result);
}
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