我正在寻找一个SortedBag的C实现,我的用例如下:我有一系列使用自定义IComparer实现进行估计和排序的对象,问题是完全不同的对象可能会产生相同的估计,当我试图使用C的默认排序集合(如SortedSet)时,SortedDictionary实现中,我无法以相同的估计值向这些集合插入多个对象,因为集合认为这些对象相等,并拒绝插入它们。我需要一个sortedbag实现,其中有o(log(n))用于插入和移除,因为我正在非常积极地进行插入/移除。
有人偶然发现了这样的实现吗?
谢谢您!
编辑
似乎我在寻找优先级队列而不是sortedbag…
最佳答案
The C5 Generic Collection Library中的TreeBag<T>
应该在insert和remove中都是O(log(n))
的,否则就有带OrderedBag<T>
的Wintellect's Power Collections for .NET了。