c - 数据在一个内存块中的 ANSI C 哈希表实现

标签 c hashtable hashmap key-value

我正在寻找一个哈希表的开源 C 实现,它将所有数据保存在一个内存块中,这样它就可以很容易地通过网络发送。 我只能找到为添加到其中的每个键值对分配小块内存的内存。

非常感谢您的所有投入。

编辑:它不一定需要是哈希表,无论键值对表可能做什么。

最佳答案

您序列化此类数据结构的次数(通过网络发送也是序列化)与您使用此类数据结构(在您的程序中)的次数相当低。因此,大多数实现更多地关注速度而不是“可能更容易序列化”方面。

如果所有数据都在一个分配的内存块中,对该数据结构的大量操作会有点昂贵,因为您必须:

  • 在添加操作时重新分配内存
  • 最有可能对删除操作进行压缩/清理(这样您非常喜欢的一个 block 就很密集并且没有空洞)

无论如何,大多数网络操作都会被缓冲,只需遍历键并发送键 + 值。

关于c - 数据在一个内存块中的 ANSI C 哈希表实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3287769/

相关文章:

java - 使用 Guava Graph 通过 ID 获取节点

java - 如果我在其中放入字符,HashMap 中的 containsKey 方法会检查整数吗?

c - 关于地址值和指针增量的问题?

c++ - 在 C 或 C++ 中用 1 到 10^10 的随机数填充数组

c - C 中函数的指针返回

Java哈希表问题

c# - 按键名从字典中删除键

c - 如何处理 Windows 的 ReadDirectoryChangesW() 及其混合的长/短文件名输出?

java - 如何在java中将哈希表转换为字符串

Java 映射混合类型