#优先队列 #二叉堆 # #队列 #优先级 #二进制

binary-heap-plus

std::collections::BinaryHeap 的增强版,支持最大堆、最小堆和自定义排序堆

13 个版本

0.5.0 2022年9月30日
0.4.1 2021年1月6日
0.4.0 2020年9月29日
0.3.1 2020年9月24日
0.1.4 2018年5月18日

#112 in 数据结构

Download history 25770/week @ 2024-04-23 20936/week @ 2024-04-30 10511/week @ 2024-05-07 19996/week @ 2024-05-14 15198/week @ 2024-05-21 13853/week @ 2024-05-28 17180/week @ 2024-06-04 19237/week @ 2024-06-11 19277/week @ 2024-06-18 20888/week @ 2024-06-25 18860/week @ 2024-07-02 21661/week @ 2024-07-09 17793/week @ 2024-07-16 26056/week @ 2024-07-23 12042/week @ 2024-07-30 15565/week @ 2024-08-06

73,742 每月下载量
22 个crate(16 个直接使用) 中使用

MIT 许可证

80KB
890

binary-heap-plus-rs

Rust

是Rust的 std::collections::BinaryHeap 的增强版本。

它支持以下堆,并保持向后兼容。

  • 最大堆
    • 使用 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() 用于替换现有堆的比较器。

兼容性和最小支持Rust版本(MSRV)

此crate基于Rust 1.62.0标准库中BinaryHeap的实现。

最小支持的Rust版本是1.56.0。

变更

请参阅 CHANGELOG.md

感谢

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

参考

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

依赖关系

~195KB