Zig Academy · leksjon

Bruke HashMap og AutoHashMap

Nøkkel-verdi-lagring fra std.

Leksjon 3 av 413 trinn

Bruke HashMap og AutoHashMap er en gratis leksjon i Zig Academy på CoddyKit. Dette er leksjon 3 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Zig Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Zig Academy inneholder totalt 4 leksjoner.

Hvorfor et hash-kart

Et hash-kart lagrer nøkkel-verdi-par og slår dem opp på nesten konstant tid. Zig leverer ett i standardbiblioteket, så De trenger sjelden å skrive Deres eget. 🗺️

Prøv AutoHashMap først

std.AutoHashMap velger hashing og likhet automatisk for vanlige nøkkeltyper som heltall og enum-er. Gi den en nkkeltype og en verditype.

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

Det trenger en allokator

På samme måte som andre beholdere som kan vokse, låner kartet minne. Send en allokator til init, så vokser kartet etter hvert som De legger til oppføringer.

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

Sett inn med put

put legger til eller overskriver en nøkkel. Det kan allokere under vekst, så det returnerer en feilunion, og De bruker try.

try map.put(1, 100);

Slå opp med get

get returnerer en optional-verdi: den lagrede verdien hvis nøkkelen finnes, eller null ellers. En manglende nøkkel fører ikke til krasj.

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

Pakk ut resultatet

Siden get er optional, håndterer De tilfellet der verdien mangler, med orelse eller en if-capture før De bruker verdien.

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

Kontroller og fjern

Bruk contains for å få et ja-eller-nei-svar, og kall remove for å slette en nøkkel. Remove returnerer true hvis nøkkelen fantes.

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

Når Auto ikke kan avgjøre

For nøkler som slicer kan ikke automatisk hashing kompileres. Da bruker De std.HashMap på lavere nivå og oppgir en kontekst.

StringHashMap for tekstnøkler

Strengnøkler er vanlige, så std tilbyr en ferdig hjelpefunksjon: std.StringHashMap vet allerede hvordan en []const u8 skal hashes.

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

Iterer over oppføringene

Hent en iterator og løkk gjennom den for å besøke hvert par. Hver oppføring gir tilgang til en peker til nøkkelen og en peker til verdien.

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

Kall alltid deinit for kartet

Kartet eier de interne bufferne sine, så kall deinit når De er ferdig. Testallokatoren markerer det hvis De glemmer det.

defer map.deinit();

Hurtigsjekk

De trenger et hash-kart med heltall som nøkler. Hvilken standardtype passer enklest?

Oppsummering

Bruk AutoHashMap for enkle nøkler og StringHashMap for tekst. Initialiser med en allokator, legg inn og hent par, iterer, og kall deretter deinit. 🎯

Gratis å komme i gang

Lær deg Zig med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
30
Leksjoner
120

Ofte stilte spørsmål

Er leksjonen «Bruke HashMap og AutoHashMap» gratis?

Ja – hele teksten i «Bruke HashMap og AutoHashMap» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Zig Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Zig Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Bruke HashMap og AutoHashMap»?

Nøkkel-verdi-lagring fra std. Du øver på Zig Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Zig Academy?

Ingen tidligere erfaring er nødvendig. Zig Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.

Hvor lang tid tar leksjonen «Bruke HashMap og AutoHashMap»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Zig Academy-leksjonen?

Ja. Alle Zig Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. En generisk stack fra grunnen av
  2. En enkeltlenket liste
  3. Bruke HashMap og AutoHashMap
  4. Profilering og avveininger for sikkerhet
← Tilbake til Zig Academy