0Pricing
Zig Academy · Lektion

HashMap und AutoHashMap verwenden

Key-Value-Speicherung aus std.

HashMap und AutoHashMap verwenden ist eine kostenlose Zig Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Zig Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Zig Academy-Kurs umfasst insgesamt 4 Lektionen.

Warum eine Hash-Map

Eine Hash-Map speichert Schlüssel-Wert-Paare und ermöglicht Zugriffe in nahezu konstanter Zeit. Zig liefert eine solche Map in der Standardbibliothek mit, sodass Sie nur selten eine eigene schreiben müssen. 🗺️

Zuerst AutoHashMap verwenden

std.AutoHashMap wählt Hashing und Gleichheitsprüfung für gängige Schlüsseltypen wie Ganzzahlen und Enums automatisch aus. Geben Sie ihr einen Schlüsseltyp und einen Werttyp.

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

Sie benötigt einen Allocator

Wie andere erweiterbare Container leiht sich die Map Speicher. Übergeben Sie init einen Allocator, damit die Map beim Hinzufügen von Einträgen wachsen kann.

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

Mit put einfügen

put fügt einen Schlüssel hinzu oder überschreibt ihn. Beim Wachsen kann Speicher reserviert werden, daher gibt die Methode eine Fehlerunion zurück und Sie verwenden try.

try map.put(1, 100);

Mit get nachschlagen

get gibt einen optionalen Wert zurück: den gespeicherten Wert, wenn der Schlüssel vorhanden ist, andernfalls null. Ein fehlender Schlüssel verursacht keinen Absturz.

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

Das Ergebnis auspacken

Da get einen Optional-Wert zurückgibt, behandeln Sie den Fall eines fehlenden Werts mit orelse oder einer If-Capture, bevor Sie den Wert verwenden.

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

Prüfen und entfernen

Fordern Sie mit contains eine Ja-Nein-Antwort an und rufen Sie remove auf, um einen Schlüssel zu löschen. Remove gibt true zurück, wenn der Schlüssel vorhanden war.

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

Wenn Auto keine Entscheidung treffen kann

Bei Schlüsseln wie Slices lässt sich automatisches Hashing nicht kompilieren. Verwenden Sie dann die niedriger angesiedelte std.HashMap und geben Sie einen Kontext an.

StringHashMap für Textschlüssel

String-Schlüssel sind häufig, daher bietet std einen fertigen Helfer: std.StringHashMap weiß bereits, wie ein []const u8 zu hashen ist.

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

Einträge durchlaufen

Erstellen Sie einen Iterator und durchlaufen Sie ihn, um jedes Paar zu besuchen. Jeder Eintrag stellt einen Zeiger auf den Schlüssel und einen Zeiger auf den Wert bereit.

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

Die Map immer mit deinit beenden

Die Map besitzt ihre internen Puffer. Rufen Sie daher deinit auf, wenn Sie fertig sind. Der Test-Allocator meldet, wenn Sie das vergessen.

defer map.deinit();

Kurze Überprüfung

Sie benötigen eine Hash-Map mit Ganzzahlen als Schlüsseln. Welcher Standardtyp passt dafür am besten?

Zusammenfassung

Verwenden Sie AutoHashMap für einfache Schlüssel und StringHashMap für Text. Initialisieren Sie die Map mit einem Allocator, fügen Sie Paare mit put ein und lesen Sie sie mit get aus, durchlaufen Sie die Einträge und rufen Sie anschließend deinit auf. 🎯

Häufig gestellte Fragen

Ist die Lektion „HashMap und AutoHashMap verwenden“ kostenlos?

Ja — der vollständige Text von „HashMap und AutoHashMap verwenden“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Zig Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Zig Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „HashMap und AutoHashMap verwenden“?

Key-Value-Speicherung aus std. Du übst Zig Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Zig Academy zu starten?

Keine Vorkenntnisse erforderlich. Zig Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „HashMap und AutoHashMap verwenden“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Zig Academy-Lektion Code schreiben und ausführen?

Ja. Jede Zig Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Ein generischer Stack von Grund auf
  2. Eine einfach verkettete Liste
  3. HashMap und AutoHashMap verwenden
  4. Profiling und Sicherheitsabwägungen
← Zurück zu Zig Academy