我需要在缓存中存储一些项目,比如聊天消息。我还需要在键值范围内切片这些项目。例如(回到聊天消息),最常见的缓存操作是从开始日期到结束日期获取聊天消息。
我应该考虑哪种数据结构?我在想简单的数组,但它适用于O(n)。是否有更快的数据结构?
答案 0 :(得分:1)
您可以使用像Red-Black Tree这样的自平衡二进制搜索树,它以有序的方式存储条目,并在平均和最差情况下以O(logn)提供插入,删除和搜索。
因此,当您需要在日期间隔之间显示聊天消息时,您可以在RB树中搜索已订购的数据范围。
答案 1 :(得分:0)
使用关联集,将数据存储在array<data>
中,但使用哈希表存储pair<data , arrayIndex>
。这样你就可以用o(1)搜索,插入和删除。