Pointers 为了Phobos';二进制堆
我已经编写了一个名为Pointers 为了Phobos';二进制堆,pointers,struct,d,phobos,binary-heap,Pointers,Struct,D,Phobos,Binary Heap,我已经编写了一个名为Node的结构,并希望能够将指向该结构的指针用作Phobos二进制堆中的条目。但是,我不确定如何为指向结构的指针实现opEquals和opCmp。我在文档中找不到任何帮助我的东西。有人能给我指出正确的方向吗?如果你有这些节点的数组*你可以这样做: Node*[] arr = ....; auto heap = heapify!(yourCustomCompareFuncGoesHere)(arr); 如果出于任何原因无法使用heapify,可以通过以下方式创建BinaryH
Node
的结构,并希望能够将指向该结构的指针用作Phobos二进制堆中的条目。但是,我不确定如何为指向结构的指针实现opEquals
和opCmp
。我在文档中找不到任何帮助我的东西。有人能给我指出正确的方向吗?如果你有这些节点的数组*你可以这样做:
Node*[] arr = ....;
auto heap = heapify!(yourCustomCompareFuncGoesHere)(arr);
如果出于任何原因无法使用heapify,可以通过以下方式创建BinaryHeap:
BinaryHeap!(Node*[], yourCustomCompareFuncGoesHere) heap;
YourCustomCompareFungGoesher将作为别名模板参数传递给堆,并用于排序的“is less比较”。与phobos文档中BinaryHeap的结构签名进行比较。对于此自定义比较函数,BinaryHeap
期望使用哪种函数签名?我试过用这种方法,用。。。奇怪的结果。好吧,它似乎需要一个返回布尔值的函数。