0Pricing
Zig Academy · Aula

Usando HashMap e AutoHashMap

Armazenamento de chave e valor da biblioteca padrão.

Usando HashMap e AutoHashMap é uma aula grátis de Zig Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Zig Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Zig Academy inclui 4 aulas no total.

Por que usar um mapa de dispersão

Um mapa de dispersão armazena pares de chave-valor e os consulta em tempo quase constante. O Zig oferece um na biblioteca padrão, então raramente você precisa criar o seu próprio. 🗺️

Prefira AutoHashMap primeiro

std.AutoHashMap escolhe automaticamente a função de dispersão e a igualdade para tipos de chave comuns, como inteiros e enumerações. Informe um tipo de chave e um tipo de valor.

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

Ele precisa de um alocador

Assim como outros contêineres expansíveis, o mapa utiliza memória emprestada. Passe um alocador para init, e o mapa crescerá à medida que você adicionar entradas.

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

Insira com put

put adiciona ou substitui uma chave. Ele pode alocar memória ao crescer, portanto retorna uma união de erro, e você usa try.

try map.put(1, 100);

Consulte com get

get retorna um valor opcional: o valor armazenado se a chave existir, ou null caso contrário. Não ocorre falha quando a chave não é encontrada.

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

Desembrulhe o resultado

Como get é opcional, trate o caso ausente com orelse ou com uma captura em if antes de usar o valor.

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

Verifique e remova

Peça a contains uma resposta sim ou não e chame remove para excluir uma chave. remove retorna true se a chave estava presente.

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

Quando o automático não consegue decidir

Para chaves como fatias, a dispersão automática não será compilada. Nesse caso, use o std.HashMap de nível mais baixo e forneça um contexto.

StringHashMap para chaves de texto

Chaves de texto são comuns, então std oferece um auxiliar pronto: std.StringHashMap já sabe como calcular a dispersão de um []const u8.

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

Itere sobre as entradas

Obtenha um iterador e use um laço para visitar cada par. Cada entrada expõe um ponteiro para a chave e um ponteiro para o valor.

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

Sempre use deinit no Map

O mapa possui seus buffers internos, então chame deinit quando terminar. O alocador de testes sinalizará o problema se você esquecer.

defer map.deinit();

Verificação rápida

Você precisa de um mapa de dispersão cujas chaves sejam inteiros. Qual tipo padrão é a opção mais simples?

Recapitulação

Use AutoHashMap para chaves simples e StringHashMap para texto. Inicialize com um alocador, use put e get nos pares, itere e depois use deinit. 🎯

Perguntas Frequentes

A aula “Usando HashMap e AutoHashMap” é grátis?

Sim — o texto completo de “Usando HashMap e AutoHashMap” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Zig Academy, atualize para CoddyKit PRO. O curso de Zig Academy inclui 4 aulas no total.

O que vou aprender em “Usando HashMap e AutoHashMap”?

Armazenamento de chave e valor da biblioteca padrão. Você pratica Zig Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Zig Academy?

Nenhuma experiência prévia é necessária. Zig Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Usando HashMap e AutoHashMap”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Zig Academy?

Sim. Cada aula de Zig Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Uma pilha genérica do zero
  2. Uma lista simplesmente encadeada
  3. Usando HashMap e AutoHashMap
  4. Perfil de desempenho e compromissos de segurança
← Voltar para Zig Academy