开发者

hashtable implementation in C?

I was wondering if you knew of a robust implement开发者_如何学编程ation of a hashtable in C. I'm looking for something other than ghashtable in glib. Thanks.


I've heard good things about the GLib Hash Table.


In C:

  • As previously mentioned g_hash_table in gLib: http://library.gnome.org/devel/glib/stable/glib-Hash-Tables.html
  • uthash: https://github.com/troydhanson/uthash
  • khash in klib: https://github.com/attractivechaos/klib
  • cdada_map in libcdada: https://github.com/msune/libcdada (C API, backend C++)

If you can/want to use C++:

  • std::map in libstdc++ (look into std::unordered_map too)
  • As noted before (updated link) sparsehash: https://github.com/sparsehash/sparsehash (look into dense too)


Will this hashtable work? (got the link from the second post of this thread)

Perhaps this one will?

(got the above from a Google search for "hashtable in c", am not a C programmer)


For a hash table I'd use google-sparsehash

PD: I don't know your requirements, but take a look at HDF5, bear in mind it exists just in case.

update

Memory Structures Library (MemSL2), o MemSL2 in another link it has implementations (one in pure C and wrappers for C++) of structures, for example, AVL trees, threaded trees, ..., and

  • Hash Tables with Separate Chaining,
  • Hash Tables with User-Defined Paging
  • Hash Tables with Dynamic Paging


A simple one in libc, see <hsearch.h> and man hsearch.

Update: just found that you can implement hashtable very easily with the help of hlist from Linux kernel. Take a look at <list.h> in Linux kernel source code for hlist_head/node and their operations.


You might want to look into using the Apache Portable Runtime? It's license is very liberal and it provides a decent hashtable implementation:

http://apr.apache.org/docs/apr/1.3/group__apr__hash.html

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜