我想知道是否有一个在C语言中具有稳健性的哈希表实现。我正在寻找除glib中的ghashtable之外的其他东西。 谢谢。
在libc中有一个简单的例子,参见和man hsearch
。
更新:刚刚发现你可以借助Linux内核中的hlist
非常容易地实现散列表。在Linux内核源代码中查看hlist_head/node
及其操作的<list.h>。
C语言中可用的哈希表实现:
g_hash_table
:http://library.gnome.org/devel/glib/stable/glib-Hash-Tables.htmluthash
:https://github.com/troydhanson/uthashkhash
:https://github.com/attractivechaos/kliblibcdada
中的cdada_map
(C API,后端为C++):https://github.com/msune/libcdada如果您想使用C++:
std::map
(也可查看std::unordered_map
)sparsehash
:https://github.com/sparsehash/sparsehash (也可查看dense)对于哈希表,我会使用google-sparsehash
附:我不知道您的要求,但请看看HDF5,记住它存在。
更新
Memory Structures Library (MemSL2) 或 另一个链接中的MemSL2 它有结构的实现(一个纯C和C++封装),例如AVL树,线索树等