C 字典查找-为什么对固定数据使用哈希表?

C 字典查找-为什么对固定数据使用哈希表?,c,dictionary,hashtable,lookup,C,Dictionary,Hashtable,Lookup,在我们正在使用的一些(可怕的第三方)代码中,有一个字典查找例程,它扫描填充有“'name-string'->function_-pointer”对的表,基本上是从K&R第6.6节复制粘贴的 我不得不对此进行扩展,在阅读代码时,我被包含在源数据结构中迭代并创建哈希表的哈希例程中的看似毫无意义的内容所震惊 假设源数据结构在编译时是固定的(因此在运行时永远不会被添加或更改),那么在其中包含哈希例程有什么意义吗 我只是有这样一个时刻,我不知道作者是在做我错过的聪明的事情,还是在偷懒和不思考(到目前为止,

在我们正在使用的一些(可怕的第三方)代码中,有一个字典查找例程,它扫描填充有“'name-string'->function_-pointer”对的表,基本上是从K&R第6.6节复制粘贴的

我不得不对此进行扩展,在阅读代码时,我被包含在源数据结构中迭代并创建哈希表的哈希例程中的看似毫无意义的内容所震惊

假设源数据结构在编译时是固定的(因此在运行时永远不会被添加或更改),那么在其中包含哈希例程有什么意义吗

我只是有这样一个时刻,我不知道作者是在做我错过的聪明的事情,还是在偷懒和不思考(到目前为止,后者经常是这样)

是否有理由为永远不会更改的数据设置哈希表

是否有理由为永远不会更新的数据创建哈希表 换衣服

可能哈希表代码已经存在并且工作正常,程序员只是想完成工作(例如,从字符串中查找函数指针)。如果这个功能不是性能关键的,我认为没有理由改变它

如果你想改变它,我建议你看看完美的哈希表

这些是哈希表,哈希函数是从一组固定的预定义键创建的。它们的优点是:它们通常比树数据结构更快

GPERF就是这样一个工具。它从一组字符串创建C代码: