0Pricing
Zig Academy · Lekcja

Korzystanie z HashMap i AutoHashMap

Przechowuj pary klucz–wartość za pomocą std.

Korzystanie z HashMap i AutoHashMap to bezpłatna lekcja Zig Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Zig Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Zig Academy zawiera 4 lekcji w sumie.

Dlaczego mapa mieszająca

Mapa mieszająca przechowuje pary klucz-wartość i wyszukuje je w czasie niemal stałym. Zig dostarcza taką mapę w bibliotece standardowej, więc rzadko trzeba pisać własną. 🗺️

Najpierw sięgaj po AutoHashMap

std.AutoHashMap automatycznie dobiera funkcję mieszającą i sposób porównywania dla typowych typów kluczy, takich jak liczby całkowite i enu. Wystarczy podać typ klucza i typ wartości.

const Map = std.AutoHashMap(u32, []const u8);

Potrzebuje alokatora

Podobnie jak inne rozszerzalne kontenery, mapa pożycza pamięć. Przekaż alokator do init, a mapa będzie rosnąć podczas dodawania wpisów.

var map = std.AutoHashMap(u32, u32).init(allocator);
defer map.deinit();

Wstawianie za pomocą put

put dodaje klucz lub zastępuje jego wartość. Podczas powiększania może alokować pamięć, dlatego zwraca unię błędu i należy użyć try.

try map.put(1, 100);

Wyszukiwanie za pomocą get

get zwraca opcjonalną wartość: zapisaną wartość, jeśli klucz istnieje, albo null w przeciwnym razie. Brakujący klucz nie powoduje awarii.

const v = map.get(1); // ?u32

Rozwijanie wyniku

Ponieważ get zwraca wartość opcjonalną, obsłuż brak klucza za pomocą orelse albo przechwycenia w instrukcji if przed użyciem wartości.

const v = map.get(1) orelse 0;

Sprawdzanie i usuwanie

Użyj contains, aby uzyskać odpowiedź tak lub nie, a następnie wywołaj remove, aby usunąć klucz. Remove zwraca true, jeśli klucz był obecny.

if (map.contains(1)) _ = map.remove(1);

Gdy AutoHashMap nie wystarcza

W przypadku kluczy takich jak slice'y automatyczne mieszanie nie skompiluje się. Wtedy należy użyć niższego poziomu, czyli std.HashMap, i dostarczyć kontekst.

StringHashMap dla kluczy tekstowych

Klucze tekstowe są często używane, dlatego std udostępnia gotową pomocniczą strukturę: std.StringHashMap już wie, jak mieszać []const u8.

var m = std.StringHashMap(i32).init(allocator);
try m.put("score", 42);

Iterowanie po wpisach

Pobierz iterator i wykonaj pętlę, aby odwiedzić każdą parę. Każdy wpis udostępnia wskaźnik do klucza i wskaźnik do wartości.

var it = map.iterator();
while (it.next()) |e| {
    std.debug.print("{d}={d}\n", .{ e.key_ptr.*, e.value_ptr.* });
}

Zawsze wywołuj deinit mapy

Mapa posiada swoje wewnętrzne bufory, dlatego po zakończeniu pracy wywołaj deinit. Alokator testowy zgłosi błąd, jeśli o tym zapomnisz.

defer map.deinit();

Szybkie sprawdzenie

Potrzebujesz mapy mieszającej, której kluczami są liczby całkowite. Jaki typ standardowy będzie najprostszym wyborem?

Podsumowanie

Używaj AutoHashMap dla prostych kluczy, a StringHashMap dla tekstu. Zainicjalizuj mapę alokatorem, dodawaj i pobieraj pary za pomocą put i get, iteruj, a następnie wywołaj deinit. 🎯

Często zadawane pytania

Czy lekcja „Korzystanie z HashMap i AutoHashMap” jest bezpłatna?

Tak — pełny tekst „Korzystanie z HashMap i AutoHashMap” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Zig Academy, przejdź na CoddyKit PRO. Kurs Zig Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Korzystanie z HashMap i AutoHashMap”?

Przechowuj pary klucz–wartość za pomocą std. Ćwiczysz Zig Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Zig Academy?

Nie wymagamy żadnego doświadczenia. Zig Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Korzystanie z HashMap i AutoHashMap”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Zig Academy?

Tak. Każda lekcja Zig Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Generyczny stos od podstaw
  2. Jednokierunkowa lista wiązana
  3. Korzystanie z HashMap i AutoHashMap
  4. Profilowanie i kompromisy bezpieczeństwa
← Powrót do Zig Academy