没有动态分配的哈希表/映射实现
Posted
技术标签:
【中文标题】没有动态分配的哈希表/映射实现【英文标题】:Hash table/map implementation without dynamic allocations 【发布时间】:2013-03-28 09:56:51 【问题描述】:有人知道不动态分配内存的 C/C++ 哈希表/映射实现吗?我正在开发一个没有标准库和堆的嵌入式系统(除非我想编写/移植一个)。
【问题讨论】:
找到一个嵌入式的堆分配实现不是比没有动态内存分配的哈希/映射更容易吗? 如果你总是可以按照完全相反的分配顺序释放分配的内存(例如alloc a,b,c
,free c,b,a
),你的内存/堆管理器可以像几十行一样简单实现堆栈数据结构的代码。
实现堆可能更容易,但如果这是我唯一需要的,它可能不是。堆栈内存存储意味着我不能乱序删除项目,这可能是个问题。
【参考方案1】:
您要查找的术语是“开放式寻址”或“封闭式哈希”。 见http://en.wikibooks.org/wiki/Data_Structures/Hash_Tables#Open_addressing 和http://en.wikipedia.org/wiki/Open_addressing
但不知道具体的实现。对不起。
【讨论】:
虽然链接不错,但它们可能会有所帮助。 实际上,那篇文章中的漂亮图片让我意识到,如果我从节点存储(可能只是一个静态数组)中实现一个空闲列表,我也可以进行链接。但我确实喜欢线性探测开放寻址的缓存一致性。以上是关于没有动态分配的哈希表/映射实现的主要内容,如果未能解决你的问题,请参考以下文章
在ansible中动态地将哈希类型分配给password_hash()