可搜索的堆栈

时间:2011-10-21 08:47:40

标签: c++ data-structures

我正在寻找一种类似堆栈的数据结构,它允许有效地搜索内容。实际上,我想要一个既保持元素插入顺序的结构,又可以通过元素的值比O(n)更快地搜索(为了防止重复)。

元素很小(指针),我主要关心的是内存效率,所以简单地使用两个互补的数据结构(一个维护顺序,一个来搜索)绝对不是理想的。

2 个答案:

答案 0 :(得分:4)

不要低估两个数据结构的内存效率。您应首先尝试直接的boost多索引容器库,并查看其内存占用是否足够。

我认为第一个不太常见的数据结构是一个跳过列表;但是,此列表不会这样做,因为您正在搜索与您订购的密钥不同的密钥。只是注意那些有相同想法的人。

答案 1 :(得分:1)

如果您主要关心的是内存效率,那么最好使用原始链表数据结构。线性搜索复杂性并不是那么糟糕,除非你已经证明了反向。

或者您可以尝试使用任何提供高效搜索的数据结构,并进行两次小升级:每个元素应包含指向先前添加的元素的链接,因此制作一个反向列表,并且您应该存储一个链接到这个列表,即最后添加的元素。这些升级需要简化推送和弹出元素。