字符串索引的数据结构?

时间:2010-10-11 05:14:52

标签: c++ algorithm data-structures unicode

我正在寻找一种针对范围查询和空间使用进行高度优化的字符串(UTF-8)索引的数据结构。谢谢!

精化: 我有我需要索引的任意长度的utf-8字符串列表。我将只使用范围查询。

实施例: 我有弦 - 苹果,猿,黑,冷,黑。

查询将是这样的 - “以desc顺序从2到3元素获取”或“获取以'ap'开头的字符串”

3 个答案:

答案 0 :(得分:3)

由于你提到“相对静态”,一个简单的排序数组可以做你想要的一切,并且在空间和时间方面都得到高度优化。

“以desc顺序从2到3元素获取”只是查找相应的数组索引。

“获取以'ap'开头的字符串”可以通过二进制搜索来完成。搜索将在以'ap'开头的第一个字符串处或之前停止,从那里开始,您只需扫描直到找到所有这些字符串。

答案 1 :(得分:1)

您检查过Tries了吗?

结构应该符合您的需要 - 范围和'开始'应该很容易,而且内存消耗也很好。

答案 2 :(得分:0)

我喜欢卡萨布兰卡的答案:由于您的数据相对静态,因此排序列表应该没问题。

如果您想要更容易更新的内容,可以使用blist.sortedlist

您甚至可以使用ZODB的BTrees,它已经包含了您想要的大部分功能(例如搜索范围)。