如何在Google go中编写可重用优先级队列的代码,或者每次需要优先级队列实现时都需要定义Less、Push和Pop函数?
发布于 2012-12-07 06:34:08
我还没有尝试过,但是如果你的案例碰巧符合某些限制,也许你可以使用反射和结构标签。您将要求您的可堆类型是一个结构,在用于排序的字段上具有类似于pq:"Key"的标记,并且该字段类型是<可比较的。它远不如less方法强大,但它可能满足您的需求。
对不起,我没有给你的示例代码。我认为这不会很难,但这需要我花一些时间。离开去做练习了。
如果我有需要处理任意结构的情况,并且我可以忍受简单的键限制,我可能会尝试这种技术。但是,对于有限的类型集,我不会这么做。我会照本宣科,为每种类型分别实现heap.Interface。这真的不是那么多的工作,也不是那么多的代码。
https://stackoverflow.com/questions/13748826
复制相似问题