Wstawianie par klucz–wartość
Część sekcji Logika i przepływ programu ścieżki Rust w Coddy. Lekcja 29 z 66.
Teraz, gdy masz pustą mapę haszującą, czas dodać do niej dane. Możesz wstawiać pary klucz-wartość do mapy haszującej za pomocą metody .insert():
let mut capitals = HashMap::new();
capitals.insert("France", "Paris");
capitals.insert("Japan", "Tokyo");Metoda .insert() przyjmuje dwa parametry: klucz i wartość. W tym przykładzie przechowujemy nazwy krajów jako klucze, a ich stolice jako wartości.
Warto pamiętać o ważnym zachowaniu: jeśli wstawisz klucz, który już istnieje w mapie haszującej, nowa wartość zastąpi starą:
capitals.insert("France", "Lyon"); // To nadpisuje "Paris"Po tej operacji wyszukanie „France” zwróci „Lyon” zamiast „Paris”. To zachowanie polegające na nadpisywaniu sprawia, że .insert() przydaje się zarówno do dodawania nowych wpisów, jak i aktualizowania istniejących w mapie haszującej.
Wyzwanie
ŁatwyOtrzymasz trzy dane wejściowe: nazwę produktu, jego cenę (jako liczbę dziesiętną) oraz nazwę innego produktu. Utwórz mutowalną mapę haszującą do przechowywania nazw produktów jako kluczy (typ String) i ich cen jako wartości (typ f64). Wstaw pierwszy produkt wraz z jego ceną do mapy haszującej. Następnie wstaw drugi produkt z ceną 0.0. Na koniec zaktualizuj cenę drugiego produktu na 15.99, wstawiając go ponownie z nową ceną. Wypisz wszystkie informacje w dokładnym formacie pokazanym poniżej.
Uwaga dotycząca .clone(): Podczas wstawiania zmiennej typu String jako klucza do HashMap zasady własności w Rust oznaczają, że zmienna zostałaby przeniesiona do mapy i nie byłaby już później dostępna. Aby móc nadal używać tej zmiennej (np. do wypisania lub ponownego wstawienia), wywołaj na niej .clone(), przekazując ją do insert(). Na przykład: map.insert(name.clone(), price).
Wymagania:
- Zaimportuj
HashMapzstd::collections - Utwórz mutowalną mapę haszującą o typie
HashMap<String, f64> - Odczytaj pierwsze dane wejściowe jako nazwę pierwszego produktu
- Odczytaj drugie dane wejściowe i przekonwertuj je na
f64, aby uzyskać cenę pierwszego produktu - Wstaw pierwszy produkt i jego cenę do mapy haszującej, używając
.clone()na nazwie produktu - Odczytaj trzecie dane wejściowe jako nazwę drugiego produktu
- Wstaw drugi produkt z ceną
0.0, używając.clone()na nazwie produktu - Wstaw ponownie drugi produkt z ceną
15.99, używając.clone()(spowoduje to nadpisanie poprzedniej wartości) - Wypisz informacje o obu produktach w dokładnym formacie pokazanym poniżej
Dane wejściowe:
- Pierwsza linia: nazwa pierwszego produktu (np.
Laptop) - Druga linia: cena pierwszego produktu jako liczba dziesiętna (np.
999.99) - Trzecia linia: nazwa drugiego produktu (np.
Mouse)
Dane wyjściowe:
- Pierwsza linia:
Inserted [first_product] at $[price] - Druga linia:
Inserted [second_product] at $0.00 - Trzecia linia:
Updated [second_product] to $15.99
Spróbuj swoich sił
use std::collections::HashMap;
use std::io;
fn main() {
// Wczytaj dane wejściowe
let mut product1 = String::new();
io::stdin().read_line(&mut product1).expect("Failed to read line");
let product1 = product1.trim().to_string();
let mut price1_input = String::new();
io::stdin().read_line(&mut price1_input).expect("Failed to read line");
let price1: f64 = price1_input.trim().parse().expect("Failed to parse price");
let mut product2 = String::new();
io::stdin().read_line(&mut product2).expect("Failed to read line");
let product2 = product2.trim().to_string();
// TODO: Napisz swój kod poniżej
// Utwórz modyfikowalną HashMap, dodaj produkty i wypisz wymagany wynik
}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