Menu
Coddy logo textTech

Usuwanie elementów

Część sekcji Logika i przepływ programu ścieżki Rust w Coddy. Lekcja 13 z 66.

Czasami trzeba usuwać elementy z wektora, a nie tylko je dodawać. Rust udostępnia dwie główne metody usuwania elementów, z których każda jest przeznaczona do innych sytuacji.

Metoda .pop() usuwa i zwraca ostatni element z wektora:

let mut numbers = vec![10, 20, 30, 40];
let last = numbers.pop(); // usuwa 40, zwraca Some(40)
// numbers zawiera teraz [10, 20, 30]

Zauważ, że .pop() zwraca wartość typu Option — otrzymujesz Some(value), jeśli był element do usunięcia, lub None, jeśli wektor był już pusty. Dzięki temu można bezpiecznie używać tej metody nawet na pustych wektorach.

Metoda .remove() usuwa element o określonym indeksie i zwraca ten element:

let mut fruits = vec!["apple", "banana", "cherry"];
let removed = fruits.remove(1); // usuwa "banana"
// fruits zawiera teraz ["apple", "cherry"]

Gdy używasz .remove(), wszystkie elementy znajdujące się za usuniętym indeksem przesuwają się w lewo, aby wypełnić lukę. Ta operacja może być wolniejsza w przypadku dużych wektorów, gdy usuwasz element z początku lub środka, ponieważ trzeba przesunąć wiele elementów.

Obie metody wymagają, aby wektor był mutowalny, ponieważ modyfikują jego zawartość. Wybierz .pop(), gdy chcesz usunąć element z końca, a .remove(), gdy chcesz usunąć element z określonej pozycji.

challenge icon

Wyzwanie

Łatwy

Otrzymasz dwa wejścia: najpierw listę liczb oddzielonych przecinkami, a następnie indeks elementu do usunięcia. Odczytaj oba wejścia, utwórz wektor z liczb, usuń element o podanym indeksie i wypisz pozostałe elementy w osobnych wierszach.

Wymagania:

  • Odczytaj pierwsze wejście zawierające liczby oddzielone przecinkami (np. 10,20,30,40,50)
  • Podziel ciąg znaków według przecinków i przekonwertuj każdą liczbę na liczbę całkowitą
  • Utwórz z tych liczb modyfikowalny wektor
  • Odczytaj drugie wejście i przekonwertuj je na liczbę całkowitą reprezentującą indeks
  • Użyj .remove(), aby usunąć element o tym indeksie
  • Wypisz każdy pozostały element w osobnym wierszu

Wejście:

  • Pierwszy wiersz: liczby całkowite oddzielone przecinkami (np. 10,20,30,40,50)
  • Drugi wiersz: liczba całkowita reprezentująca indeks elementu do usunięcia

Wyjście: Wypisz każdy pozostały element wektora w osobnym wierszu

Spróbuj swoich sił

use std::io;

fn main() {
    // Wczytaj liczby oddzielone przecinkami
    let mut numbers_input = String::new();
    io::stdin().read_line(&mut numbers_input).expect("Failed to read line");
    
    // Wczytaj indeks elementu do usunięcia
    let mut index_input = String::new();
    io::stdin().read_line(&mut index_input).expect("Failed to read line");
    
    // TODO: Napisz swój kod poniżej
    // 1. Podziel numbers_input według przecinków i przekonwertuj na liczby całkowite
    // 2. Utwórz z tych liczb modyfikowalny wektor
    // 3. Przekonwertuj index_input na liczbę całkowitą
    // 4. Usuń element o podanym indeksie
    // 5. Wypisz każdy pozostały element w osobnym wierszu
    
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Kompilator Rust online