Perl数据结构有移位/推送和快速查找?

时间:2011-11-13 23:53:51

标签: perl data-structures

我正在接收事件,并且我想跟踪最近的N个事件,并且对于任何新事件,计算过去发生过类似事件的次数(这通常不会经常发生)。

因此,我需要一些带队列语义(shift / push)以及快速查找不是插入顺序的键。

我当前的解决方案,当我们只关心计数时,是保持一个事件数组和一个计数哈希值,这样我就可以在推送时递增适当的计数器并在移位时递减它。但是,这不允许我记录更多的计数,并且难以概括。

另一种可能性是将事件放置在包含N / K事件的几代K + 1哈希表中,跟踪插入的顺序,并在最新的表满时丢弃最旧的表。这使我在具有恒定移位/推送和线性查找的队列(当K = N时)之间进行权衡,并且以最多两倍的内存(K = 1)为代价进行更快的查找。

我认为类似链接哈希表的行为会稍微好一些。在Perl中是否存在这个或具有等效语义的东西?

1 个答案:

答案 0 :(得分:2)

如果您只想要有序哈希,请查看Tie::IxHash。它应该至少取代你保留数组和散列的解决方案。