0Pricing
Zig Academy · Урок

Использование HashMap и AutoHashMap

Хранилище пар «ключ—значение» из std.

«Использование HashMap и AutoHashMap» — бесплатный урок Zig Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Zig Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Zig Academy содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

Why a Hash Map

A hash map stores key-value pairs and looks them up in near-constant time. Zig ships one in the standard library, so you rarely write your own. 🗺️

Reach for AutoHashMap First

std.AutoHashMap picks hashing and equality automatically for common key types like integers and enums. Give it a key type and a value type.

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

It Needs an Allocator

Like other growable containers, the map borrows memory. Pass an allocator to init and the map grows as you add entries.

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

Insert with put

put adds or overwrites a key. It can allocate while growing, so it returns an error union and you use try.

try map.put(1, 100);

Look Up with get

get returns an optional value: the stored value if the key exists, or null otherwise. No crash on a missing key.

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

Unwrap the Result

Because get is optional, handle the absent case with orelse or an if capture before using the value.

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

Check and Remove

Ask contains for a yes-or-no answer, and call remove to delete a key. Remove returns true if the key was present.

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

When Auto Cannot Decide

For keys like slices, automatic hashing will not compile. Then you use the lower-level std.HashMap and supply a context.

StringHashMap for Text Keys

String keys are common, so std offers a ready helper: std.StringHashMap already knows how to hash a []const u8.

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

Iterate Over Entries

Get an iterator and loop to visit every pair. Each entry exposes a key pointer and a value pointer.

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

Always deinit the Map

The map owns its internal buffers, so call deinit when you are done. The testing allocator flags it if you forget.

defer map.deinit();

Quick Check

You need a hash map whose keys are integers. Which standard type is the simplest fit?

Recap

Use AutoHashMap for simple keys and StringHashMap for text. Init with an allocator, put and get pairs, iterate, then deinit. 🎯

Часто задаваемые вопросы

Урок «Использование HashMap и AutoHashMap» бесплатный?

Да — полный текст урока «Использование HashMap и AutoHashMap» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Zig Academy, подпишись на CoddyKit PRO. Курс Zig Academy содержит 4 уроков всего.

Чему я научусь в уроке «Использование HashMap и AutoHashMap»?

Хранилище пар «ключ—значение» из std. Ты практикуешь Zig Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Zig Academy?

Предыдущий опыт не требуется. Zig Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Использование HashMap и AutoHashMap»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Zig Academy?

Да. Каждый урок Zig Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Обобщённый стек с нуля
  2. Односвязный список
  3. Использование HashMap и AutoHashMap
  4. Профилирование и компромиссы безопасности
← Назад к Zig Academy