我对如何正确使用Binary Heap
. std.container
更具体地说,我想创建一个最大的整数堆,所以我试着写
auto maxHeap = BinaryHeap!int();
并收到编译器抱怨int
不能用 [] 切片。我试图在 Phobos 上阅读它的文档,但我不明白如何创建一个新的、空的二进制堆,用于存储整数。
有人可以帮帮我吗?
我对如何正确使用Binary Heap
. std.container
更具体地说,我想创建一个最大的整数堆,所以我试着写
auto maxHeap = BinaryHeap!int();
并收到编译器抱怨int
不能用 [] 切片。我试图在 Phobos 上阅读它的文档,但我不明白如何创建一个新的、空的二进制堆,用于存储整数。
有人可以帮帮我吗?
正如线程中解释的那样,您可以尝试以这种方式使用它:
import std.container: Array, heapify;
void main()
{
int[] arr = [1, 2, 3];
auto wrapped = Array!int(arr);
auto queue = heapify(wrapped);
}
好吧,如果您阅读有关 BinaryHeap 的文档,我相信您不会感到困惑。
第一句话清楚地解释了关键信息:
在给定的随机访问范围类型(通常为 T[])或随机访问容器类型(通常为 Array!T)之上实现二进制堆容器。
这是你应该做的:
import std.stdio;
import std.container;
void main(string[] args) {
int[] arr = [1, 4, 12, 19];
auto bh = BinaryHeap!(int[])(arr);
writeln(bh.length); // prints 4
}
值得提醒的是,D 数组是一个随机存取范围。