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.
Wyzwanie
ŁatwyOtrzymasz 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
}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
1Zaawansowane sterowanie przepływem
Wyrażenie „match”Dopasowywanie wielu wartościDopasowywanie zakresówWyrażenie „if let”Pętle jako wyrażeniaPodsumowanie — prosty parser poleceń4Grupowanie danych za pomocą struktur
Czym jest struktura?Przegląd strukturDostęp do pól strukturyModyfikowalne strukturyStruktury jako parametry funkcjiStruktury krotkowePodsumowanie — utwórz strukturę Book2Wprowadzenie do wektorów
Czym jest wektor?Tworzenie wektoraDodawanie elementów za pomocą pushDostęp do elementów wektoraIterowanie po wektorzeIterowanie z możliwością modyfikacjiUsuwanie elementówPodsumowanie — prosty licznik punktów5Pary klucz–wartość z mapami hashującymi
Czym jest mapa haszująca?Tworzenie mapy haszującejWstawianie par klucz–wartośćDostęp do wartościIterowanie po mapie haszującejAktualizowanie wartościUsuwanie paryPodsumowanie – licznik słów8Projekt: Prosty system inwentaryzacji
Konfiguracja projektuDodawanie produktuSprawdzanie stanu magazynowegoSprzedaż produktuŁączenie wszystkiego w całość3Lista zadań w wierszu poleceń
Konfiguracja projektuDodawanie zadaniaWyświetlanie wszystkich zadańUsuwanie zadaniaKońcowy kodPoćwicz samodzielnie: Kompilator Rust online