没有重复或有序集的列表

时间:2013-07-08 10:38:13

标签: haskell

是否有一个提供数据结构的库,它保留了项目的顺序并且不包含任何重复项?这样的数据结构是否存在适当的名称?

我希望它的行为就像每个操作后应用nub的列表一样。当然,我不认为它会被无效地实施。

2 个答案:

答案 0 :(得分:8)

这是一个解决方案:

使用fingertree Set幺半群作为衡量标准。然后在插入时,首先使用完整指尖的measure检查成员资格。这会为您提供O(log(n))缺点和snoc,O(1)删除。

这是另一种解决方案:

将普通列表与普通Set配对并获得基本相同的效果。您可以获得更好的常数因子,但O(log(n))会删除。

这是一个问题:在插入副本时你想要发生什么?是否应保留现有职位?新职位?优先级队列可能接近您想要的,具体取决于。

答案 1 :(得分:0)

ordered-containers中的

OSet似乎可以满足您的要求。