2014-06-12 18 views
4

我写了一个名为Node的结构,并希望能够使用指向该结构的指针作为Phobos BinaryHeap中的条目。但是,我不确定opEqualsopCmp是如何实现指向结构的指针(或者实际上,通常)。我无法在文档中找到任何帮助我的东西。任何人都可以将我指向正确的方向吗?将指针与用于Phobos二进制堆的结构进行比较

回答

3

如果您有这些节点的数组*你可以做这样的事情:

BinaryHeap!(Node*[], yourCustomCompareFuncGoesHere) heap; 

Node*[] arr = ....; 
auto heap = heapify!(yourCustomCompareFuncGoesHere)(arr); 

如果您不能使用heapify无论出于何种原因,你可以通过创建一个二叉堆

yourCustomCompareFuncGoesHere将作为别名模板参数传递给堆,并用于排序的“少比较”。与phobos文档中的BinaryHeap的结构签名进行比较。

+0

对于这个自定义比较函数,“BinaryHeap”期望什么样的函数签名?我尝试过使用这种方法,结果很奇怪。 –

+0

好吧,它好像想要一个返回布尔值的函数。 –

相关问题