小智 57
我有同样的需求,并做了一些研究,最终使用libcfu
它简单易读,如果我需要修改,我可以不花太多时间去理解.它也是BSD许可证.无需更改我的结构(嵌入说下一个指针)
由于以下原因(我的个人原因,YMMV),我不得不拒绝其他选项:
总结为非常简单的使用strmap是好的; uthash如果您担心额外的内存使用.如果只是开发速度或易用性是主要目标,libcfu获胜[注意libcfu内部进行内存分配以维护节点/哈希表].令人惊讶的是,没有很多简单的C哈希实现可用.
小智 16
GLib是一个很棒的库,可以作为C项目的基础.他们有一些不错的数据结构产品,包括Hash Tables:http://developer.gnome.org/glib/2.28/glib-Hash-Tables.html(link updated 4/6/2011)
对于字符串,Judy Array可能很好.
Judy数组是一个复杂但非常快速的关联数组数据结构,用于使用整数或字符串键存储和查找值.与普通数组不同,Judy数组可能稀疏; 也就是说,它们可能具有大范围的未分配索引.
这里是一个朱迪库中Ç.
AC库,提供实现稀疏动态阵列的最先进的核心技术.Judy数组只用空指针声明.Judy数组仅在填充时消耗内存,但如果需要,可以增长以利用所有可用内存.
其他参考资料,
这个维基百科哈希实现参考有一些C开源链接.
此外,cmph - 最小完美哈希库C,支持几种算法.