Menu
Coddy logo textTech

Weitere Slices

Teil des Abschnitts Logic & Flow der Rust-Journey von Coddy — Lektion 57 von 66.

Während String-Slices sehr nützlich sind, beschränkt sich Slicing nicht nur auf Strings. Rusts Slice-Konzept erstreckt sich auf jede Sequenz von Elementen, was es zu einem mächtigen Werkzeug für die Arbeit mit Collections macht, ohne Ownership zu übernehmen.

Sie können Slices aus Arrays und Vektoren mit derselben Syntax erstellen, die Sie für Strings gelernt haben. Wenn Sie zum Beispiel ein Array von Zahlen haben, können Sie ein Slice erstellen, das auf einen Teil oder das Ganze verweist:

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

Dasselbe Prinzip funktioniert auch bei Vektoren. Sie können Slices aus Vektoren erstellen, um mit Teilen der Daten zu arbeiten, ohne diese zu verschieben oder zu kopieren:

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

Aufgabe

Einfach

Sie erhalten 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 für die Erstellung eines Slices darstellen. Die dritte Eingabe ist eine einzelne Zahl, die einen Index darstellt, auf den innerhalb des Slices zugegriffen werden soll.

Erstellen Sie einen Vektor aus den durch Kommas getrennten Zahlen und erstellen Sie dann einen Slice unter Verwendung des angegebenen Bereichs. Greifen Sie auf das Element am angegebenen Index aus dem Slice zu und geben Sie es aus.

Anforderungen:

  • Lesen Sie die erste Eingabe (durch Kommas getrennte Zahlen) und entfernen Sie Leerzeichen am Anfang und Ende
  • Teilen Sie die Eingabe nach Kommas auf und parsen Sie jede Zahl zu i32
  • Erstellen Sie einen Vektor aus diesen Zahlen
  • Lesen Sie die zweite Eingabe (zwei durch ein Leerzeichen getrennte Zahlen) und entfernen Sie Leerzeichen am Anfang und Ende
  • Teilen Sie die zweite Eingabe nach Leerzeichen auf, um den Start- und Endindex zu erhalten
  • Parsen Sie beide Indizes zu usize
  • Erstellen Sie einen Slice aus dem Vektor unter Verwendung der Bereichssyntax &vec[start..end]
  • Lesen Sie die dritte Eingabe (Index für den Zugriff) und entfernen Sie Leerzeichen am Anfang und Ende
  • Parsen Sie den Index zu usize
  • Greifen Sie auf das Element am angegebenen Index aus dem Slice zu
  • Geben Sie das aufgerufene 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 Indexnummer (z. B. 2)

Ausgabe:

  • Das Element am angegebenen Index aus dem 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 End-Indizes)
    let second_input = lines.next().unwrap().unwrap();
    
    // Lies die dritte Eingabe (Index für den Zugriff)
    let third_input = lines.next().unwrap().unwrap();
    
    // TODO: Schreibe deinen Code unten
    // Parse die kommagetrennten Zahlen und erstelle einen Vektor
    // Parse die Start- und End-Indizes
    // 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 Logic & Flow