#binary-heap #heap #binary #priority #queue

dotreds-binary-heap-plus

std::collections::BinaryHeap的增强版本,支持最大堆、最小堆和自定义顺序堆。公开了一些之前内部函数

5个版本 (稳定)

1.0.3 2022年4月21日
0.4.1 2022年4月21日

#2249数据结构

MIT 许可协议

25KB
538

binary-heap-plus-rs

Rust

在Rust的std::collections::BinaryHeap的基础上进行了增强。

这个版本的Binary-heap-plus公开了一些私有函数。

它支持以下堆,同时保持向下兼容。

  • 最大堆
    • 使用BinaryHeap::new()::with_capacity()
  • 最小堆
    • 使用BinaryHeap::new_min()::with_capacity_min()
  • 由闭包排序的堆
    • 使用BinaryHeap::new_by()::with_capacity_by()
  • 由闭包生成的键排序的堆
    • 使用BinaryHeap::new_by_key()::with_capacity_by_key()

其他添加的显著方法包括

  • BinaryHeap::from_vec_cmp()BinaryHeap::from_vec(),用于更通用的构建。
  • .into_iter_sorted(),这是.into_iter()的一个更不令人惊讶的版本。实现是从std回滚的。
  • .replace_cmp() 用于替换现有堆的比较器。

MSRV(最低支持Rust版本)

此crate需要Rust 1.32.0或更高版本。

变更

请参阅CHANGELOG.md。 https://github.com/sekineh/binary-heap-plus-rs/blob/master/CHANGELOG.md

感谢

  • 我从Pre-RFC线程[1]中收到了许多宝贵的反馈。
    • 当前设计基于@ExpHP的建议,可以在稳定编译器上编译。
    • DDOtten、steven099、CAD97、ExpHP、scottmcm、Nemo157和gnzlbg,感谢您查看设计!
  • @ulysseB向我发送了第一个pull request!
  • @inesseq贡献了功能 serde1
  • @davidli2010贡献了比较器更新和 unsafe 性能优化。

参考文献

请参阅以下讨论,了解crate的背景

依赖关系

~20KB