Matrizes associativas / esparsas em C puro? Experimente!

tl; dr

http://www.nedprod.com/programs/portable/nedtries/
https://github.com/ned14/nedtries/blob/master/test.c

Embora geralmente aceitemos matriz associativa / dicionário / estrutura de dados hash como garantida em linguagens de programação modernas, não existe tal coisa embutida em um bom e velho C. Pode ser tentador usar SQLite ou mesmo Berkeley DB para preencher essa necessidade em muitos projetos, mas o tratamento de dependência extra é um PITA.
Além disso, existem muitas tarefas que não requerem ACID nem armazenamento persistente.
Mesmo uma árvore vermelho-preta pode ser um exagero às vezes. Então, há um teste bit a bit . Uma implementação específica, nedtries , chamou minha atenção:

  1. É distribuído como um único arquivo de cabeçalho ( nedtrie.h);
  2. É muito rápido;
  3. É muito pequeno;
  4. Não requer nenhuma alocação dinâmica de memória;
  5. É compatível com C / C ++.