标签: vector rust
我正在实现一个二进制堆,在其他语言中,最方便的做法是存储一个内部数组,但是将此数组的第一个元素设置为return并忽略它。这样,如果节点位于索引null,则其子节点将始终位于i和i * 2。
return
null
i
i * 2
如果使用索引0,这将不再起作用,因为0 * 2 =0。但是,在Rust中,没有i * 2 + 1,因此我将不得不使用null而不是{{1 }},使一切变得繁琐。
i * 2 + 1
所以我的问题是,是否可以自定义Vec<Option<MyHeapItem>>以便索引1指向第一个元素?
Vec<Option<MyHeapItem>>