我希望有一个不可增长的哈希映射,其大小在编译时已知,存储在堆栈上或作为全局变量。用于此的主要用例是具有>的微控制器中的散列映射。 32k RAM。
这在理论上是否可行?我知道在某种程度上可能会有太多的碰撞 - 但是如果你没有那么多,我认为它仍然值得。
答案 0 :(得分:1)
我不明白为什么它不可能。如果密钥都是事先知道的,那么从理论上讲,你可以为它们找到一个完美的哈希,从而消除哈希表大小的任何开销。
如果密钥是动态的,但您希望避免堆分配,则需要使用使用现有内存的开放式寻址方案。您可能希望明确跟踪哈希表中的值的数量,并在其足够饱满时拒绝新的插入(例如,80%可能是一个很好的最大值,以确保性能也不会降低严重)。