1个不稳定版本
0.1.0 | 2024年7月4日 |
---|
419 在 嵌入式开发 中
18KB
357 行
AllocVec
一个向量,其中每个推入的元素都保证在它被移除之前保持其索引。
内部使用一个普通的 Vec
和一个链表来快速分配和释放。
支持预留空间并在以后用元素填充。
示例
use allocvec::AllocVec;
let mut vec = AllocVec::new();
let idx1 = vec.allocate(4);
let idx2 = vec.allocate(8);
let idx3 = vec.allocate(15);
vec.deallocate(idx1);
vec.deallocate(idx3);
assert_eq!(Some(8), vec.get(idx2));
速度
尽管我没有对实现效率进行基准测试,但 分配、释放 和 索引 操作都是 O(1),而计算向量的长度是 O(n)。
迭代器需要过滤向量中的未分配和空槽,因此这可能会对分支预测产生不利影响。