D 二进制堆中数组的奇数行为

D 二进制堆中数组的奇数行为,d,phobos,D,Phobos,我有一个树状结构,使用节点对象,并引用其他节点对象节点是一个类。现在,我正在编写的一个例程需要一个最小优先级队列,我正在使用std.container.BinaryHeap和std.container.Array实现它。我将其实例化如下: Node[] r; auto heap = BinaryHeap!(Array!(Node), "a > b")(Array!Node(r)); 作为例程的一部分,我使用insert将元素插入heap,并使用removeAny从中删除元素。现在,该例程

我有一个树状结构,使用
节点
对象,并引用其他
节点
对象<代码>节点是一个类。现在,我正在编写的一个例程需要一个最小优先级队列,我正在使用
std.container.BinaryHeap
std.container.Array
实现它。我将其实例化如下:

Node[] r;
auto heap = BinaryHeap!(Array!(Node), "a > b")(Array!Node(r));

作为例程的一部分,我使用
insert
将元素插入
heap
,并使用
removeAny
从中删除元素。现在,该例程工作正常,但之后,由于缺少节点,树状结构中断(我的不变量失败)。这里发生了什么以及为什么会发生这种情况?

可能是-std.container.Array销毁类实例

节点
是clas还是结构?它是类。我已经编辑了我的原始帖子来澄清这一点。你能发布一个复制该行为的最小调用序列吗?根据请求,这里是一个复制该行为的最小调用序列。这清楚地表明结构中缺少节点:这是在2011-12年报告的,但仍然没有得到解决?这有点令人担忧——我怀疑这就是问题所在。除了野蛮的复制,有没有办法解决这个问题?我正在使用
Array
进行
BinaryHeap
操作,没有其他原因,所以有什么方法可以避免它吗?对于正在观看的任何人来说,这个问题似乎是在14天前解决的。