【发布时间】:2014-05-09 18:14:06
【问题描述】:
我正在用 C 语言实现一段类似这样的逻辑(对于解释器):
if <input string> in <list of pre-defined constant strings>
do_a_predefined_action()
else
do_something_else(<input string>)
我的第一个想法是哈希表,但如果常量字符串在编译时已知,则必须在运行时手动初始化哈希表似乎有点浪费。
我的其他想法包括静态初始化具有已知哈希值的哈希表结构(ick...),然后像平常一样简单地使用它。另一个是一个巨大的嵌套switch 块,它将提供O(log n) 查找时间(不如哈希表快)。
查找一组预定义字符串的最佳方法是什么?我还没有看到什么解决方案?优雅比速度更受欢迎。
【问题讨论】:
-
我会在启动时构建哈希表并完成它。稍后,如果您因此认为启动时间不可接受,您可以编写某种预处理器,预先构建哈希表以供包含。
-
@500-InternalServerError:如果没有更好的路线,这就是我打算走的路。我对我的代码非常强迫,而且启动的东西看起来很丑。感谢您的输入。 :-)
标签: c hashtable compile-time