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, ist das Slicing nicht nur auf Strings beschränkt. Rusts Slice-Konzept erstreckt sich auf jede Sequenz von Elementen, was es zu einem leistungsstarken 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 beispielsweise ein Array von Zahlen haben, können Sie ein Slice erstellen, das einen Teil oder das gesamte Array referenziert:

let numbers = [1, 2, 3, 4, 5];
let slice: &[i32] = &numbers[1..4]; // Dies ergibt [2, 3, 4]
let full_slice: &[i32] = &numbers;  // Dies referenziert 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

Spickzettel

Slices können aus Arrays und Vektoren erstellt werden, nicht nur aus Strings. Sie referenzieren einen Teil einer Kollektion, ohne den Besitz zu übernehmen.

Erstellen von Slices aus Arrays:

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

Erstellen von Slices aus Vektoren:

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

Slices verwenden dieselbe Range-Syntax wie String-Slices und ermöglichen es Ihnen, mit Teilen von Daten zu arbeiten, ohne diese zu verschieben oder zu kopieren.

Probier es selbst

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

fn main() {
    let stdin = io::stdin();
    let mut lines = stdin.lock().lines();
    
    // Erste Eingabe lesen (kommagetrennte Zahlen)
    let first_input = lines.next().unwrap().unwrap();
    
    // Zweite Eingabe lesen (Start- und End-Indizes)
    let second_input = lines.next().unwrap().unwrap();
    
    // Dritte Eingabe lesen (zuzugreifender Index)
    let third_input = lines.next().unwrap().unwrap();
    
    // TODO: Schreiben Sie Ihren Code unten
    // Die kommagetrennten Zahlen parsen und einen Vektor erstellen
    // Die Start- und End-Indizes parsen
    // Einen Slice aus dem Vektor erstellen
    // Auf das Element am angegebenen Index aus dem Slice zugreifen
    
    // Das Ergebnis ausgeben
    // 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