Usar HashMap y AutoHashMap
Almacenamiento de clave-valor desde std.
Usar HashMap y AutoHashMap es una lección gratuita de Zig Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Zig Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Zig Academy incluye 4 lecciones en total.
Por qué usar un mapa hash
Un mapa hash almacena pares de clave-valor y los busca en un tiempo casi constante. Zig incluye uno en la biblioteca estándar, así que rara vez tendrá que escribir el suyo. 🗺️
Empiece por AutoHashMap
std.AutoHashMap selecciona automáticamente el hash y la igualdad para tipos de clave comunes, como enteros y enumeraciones. Indíquele un tipo de clave y un tipo de valor.
const Map = std.AutoHashMap(u32, []const u8);Necesita un asignador
Al igual que otros contenedores ampliables, el mapa toma memoria prestada. Pase un asignador a init y el mapa crecerá a medida que añada entradas.
var map = std.AutoHashMap(u32, u32).init(allocator);
defer map.deinit();Inserte con put
put añade o sobrescribe una clave. Puede asignar memoria al crecer, por lo que devuelve una unión de error y debe usar try.
try map.put(1, 100);Busque con get
get devuelve un valor opcional: el valor almacenado si existe la clave, o null en caso contrario. Una clave ausente no provoca errores.
const v = map.get(1); // ?u32Desenvuelva el resultado
Como get es opcional, gestione el caso ausente con orelse o una captura en if antes de usar el valor.
const v = map.get(1) orelse 0;Compruebe y elimine
Use contains para obtener una respuesta afirmativa o negativa y llame a remove para eliminar una clave. Remove devuelve true si la clave estaba presente.
if (map.contains(1)) _ = map.remove(1);Cuando Auto no puede decidir
Para claves como los slices, el hash automático no compila. En ese caso, use el std.HashMap de nivel inferior y proporcione un contexto.
StringHashMap para claves de texto
Las claves de texto son habituales, así que std ofrece un auxiliar listo para usar: std.StringHashMap ya sabe aplicar hash a un []const u8.
var m = std.StringHashMap(i32).init(allocator);
try m.put("score", 42);Itere sobre las entradas
Obtenga un iterador y use un bucle para visitar cada par. Cada entrada expone un puntero a la clave y un puntero al valor.
var it = map.iterator();
while (it.next()) |e| {
std.debug.print("{d}={d}\n", .{ e.key_ptr.*, e.value_ptr.* });
}Siempre haga deinit del mapa
El mapa posee sus búferes internos, así que llame a deinit cuando termine. El asignador de pruebas lo señalará si lo olvida.
defer map.deinit();Comprobación rápida
Necesita un mapa hash cuyas claves sean enteros. ¿Qué tipo estándar es el más sencillo?
Resumen
Use AutoHashMap para claves sencillas y StringHashMap para texto. Inicialice con un asignador, use put y get para los pares, itere y, después, haga deinit. 🎯
Preguntas frecuentes
¿La lección «Usar HashMap y AutoHashMap» es gratis?
Sí — el texto completo de «Usar HashMap y AutoHashMap» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Zig Academy, actualiza a CoddyKit PRO. El curso de Zig Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Usar HashMap y AutoHashMap»?
Almacenamiento de clave-valor desde std. Practicas Zig Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Zig Academy?
No se requiere experiencia previa. Zig Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Usar HashMap y AutoHashMap»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Zig Academy?
Sí. Cada lección de Zig Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Una pila genérica desde cero
- Una lista enlazada simple
- Usar HashMap y AutoHashMap
- Perfilado y compromisos de seguridad