我正在寻找C ++中有界优先级队列抽象的自由软件实现。基本上,我需要一个行为与std::priority_queue
类似的数据结构,但最多只能保存“最佳” n 元素。
示例:
std::vector<int> items; // many many input items
bounded_priority_queue<int> smallest_items(5);
for(vector<int>::const_iterator it=items.begin(); it!=items.end(); it++) {
smallest_items.push(*it);
}
// now smallest_items holds the 5 smallest integers from the input vector
有谁知道这种事情的良好实施?有经验吗?
答案 0 :(得分:1)
我认为this thread中讨论的算法可能正是您所寻求的。如果你想要先行一步,你可能需要考虑建立Boost的实现d_ary_heap_indirect
,它是Boost.Graph的一部分(在d_ary_heap.hpp
中)。如果你做得很好,可以将它提交给Boost。它可以做一个很好的小补充,因为这样的实现肯定有很多用途。
答案 1 :(得分:0)
为什么不将std :: vector与functor / comparison函数和std :: sort()一起使用到正确的顺序? 代码可能非常简单