我已经编写了一个名为Node
的结构体,并且希望能够将指向该结构的指针用作Phobos BinaryHeap
中的条目。但是,我不确定如何将opEquals
和opCmp
用于指向结构的指针(或实际上,通常)。我在文档中找不到任何帮助我的内容。有人能指出我正确的方向吗?
答案 0 :(得分:3)
如果您有这些Node *的数组,您可以这样做:
Node*[] arr = ....;
auto heap = heapify!(yourCustomCompareFuncGoesHere)(arr);
如果由于某种原因无法使用heapify,可以通过以下方式创建BinaryHeap:
BinaryHeap!(Node*[], yourCustomCompareFuncGoesHere) heap;
yourCustomCompareFuncGoesHere将作为别名模板参数传递给堆,并用于排序的“较少比较”。与phobos docs中的BinaryHeap的struct签名进行比较。