我主要关注字符串键。有人可以指向一个库吗?
我有同样的需求,做了一些研究后决定使用libcfu
它很简单易读,如果我需要修改,不需要花太多时间去理解。它还是BSD许可证。没有必要改变我的结构体(例如嵌入一个next指针)
以下是我拒绝其他选项的原因(个人原因,可能会因人而异):
简而言之,如果只是简单使用,strmap 是不错的选择;如果您担心额外的内存使用,可以使用 uthash。如果开发速度或易用性是主要目标,libcfu 胜出 [请注意,libcfu 在内部进行内存分配以维护节点/哈希表]。令人惊讶的是,没有太多简单的 C 语言哈希表实现。
GLib是一个非常好的库,可以作为你的C语言项目的基础。它们提供了一些不错的数据结构,其中包括哈希表:http://developer.gnome.org/glib/2.28/glib-Hash-Tables.html(链接已于2011年4月6日更新)。
C
开源链接。
另外,cmph——一个在C
中支持多种算法的最小完美哈希库。Dave Hanson的 C接口与实现 包含了一个很好的哈希表和其他几个精心设计的数据结构。此外,还有一个不错的字符串处理接口。如果你能承担得起这本书,它是非常棒的,但即使没有,我发现这个软件设计得非常好,足够小,可以完全学习,并且易于在多个不同的项目中重复使用。
来自samtools/bwa/seqtk/klib的khash.h
使用curl获取:https://raw.github.com/attractivechaos/klib/master/khash.h
我从未使用过它,但Google Sparsehash可能会起作用。
switch标签之间的fall-through
,请使用#pragma GCC diagnostic ignored "-Wimplicit-fallthrough"
;如果出现填充结构体'struct UT_hash_table'以对齐'tail'的4个字节
,请参见https://github.com/troydhanson/uthash/issues/118#issue-223582662。 - Zhou Hongbo