保存关键字的最有效数据结构是什么?

时间:2009-08-17 02:10:20

标签: language-agnostic parsing

我决定编写一个小解析器来解析BBCode并返回格式正确的HTML。我很难决定代表关键字的最有效方式是什么。我总是可以使用单独的字符串来保存它们,但我觉得必须有一些未知的数据结构(对我来说)才能有效查找。

如果我可以使用的STL中有任何内容,我正在使用C ++。我不打算实际使用它,所以我不需要使用像PHP这样的东西。它没有GUI界面;只需输入一个文本文件,它就会输出一个解析出HTML的新文件。

修改:按关键字,我指的是开始和结束标记,例如[b][/b]

3 个答案:

答案 0 :(得分:4)

由于您事先了解了所有关键字,因此您可以利用perfect hashing,例如通过this library - 另请参阅维基百科entry及其中的指示。

答案 1 :(得分:2)

经典答案是哈希表。恒定时间插入/更换。

但是你想要的并不完全清楚。如果只是为了保持关键字整齐有序而不是通过你的代码,一个简单的数组就可以了;然后使用#defines索引并选择它们。

答案 2 :(得分:1)

经典是1973年论文中介绍的Aho-Corasick关键词树。

线性时间字插入,线性时间字查找。