6个版本
0.1.5 | 2023年9月6日 |
---|---|
0.1.4 | 2023年6月20日 |
0.1.3 | 2022年1月20日 |
#1151 in 数据结构
每月下载 77次
20KB
347 行
非重叠区间树
一个简单的库,包含基于范围键的元素,这些键不能重叠。查找查询可以查找范围内的一个特定点,并返回该范围的值。
文档: docs.rs
此库支持no_std(但需要core和alloc crate)。要启用no_std,请禁用默认功能。
lib.rs
:
一个对no-std友好的非重叠区间树。
该树维护一组可以通过键索引的元素,其中键是一个范围。查找查询在查找键包含在范围内时返回范围的值。
此树要求所有元素的范围都必须非重叠,这是通过insert_replace函数强制执行的。因此,insert_replace函数有一些额外的运行时开销,其大小与当前通过范围键索引且与我们要插入的范围重叠的元素数量成比例。为了加快插入速度,存在一个不安全的插入函数,其中调用者预期会自行确保非重叠属性。
要使用no-std版本,请关闭默认功能。
示例
use nonoverlapping_interval_tree::NonOverlappingIntervalTree;
let mut it = NonOverlappingIntervalTree::new();
it.insert_replace(1..3, "hello");
assert_eq!(it.get(&2), Some(&"hello"));
assert_eq!(it.get(&7), None);
assert_eq!(it.get(&3), None); // Intervals are [1, 3)