heap

std.collections.heap

rec Heap

pub rec Heap[T];

fun init

pub fun init[T](alloc: *allocator.Allocator, cmp: fun(*T, *T) i64) Heap[T];

创建一个空的最小堆

alloc:用于分配的分配器 cmp:比较函数(若 a < b 返回负数,相等返回 0,若 a > b 返回正数) ret:一个新的空 Heap[T]

fun dnit

pub fun dnit[T](h: *Heap[T]) bool;

释放后备缓冲区

ret:如果内存成功释放则为 true

fun is_empty

pub fun is_empty[T](h: Heap[T]) bool;

检查堆是否为空

ret:如果堆没有元素则为 true

fun length

pub fun length[T](h: Heap[T]) usize;

返回堆中的元素数量

ret:元素数量

fun push

pub fun push[T](h: *Heap[T], value: T) Result[usize, str];

向堆中添加一个元素

value:要插入的值 ret:新长度,或一个错误

fun pop

pub fun pop[T](h: *Heap[T]) Result[T, str];

移除并返回最小元素

ret:最小值,如果为空则返回错误

fun peek

pub fun peek[T](h: *Heap[T]) Result[*T, str];

返回指向最小元素的指针而不移除它

ret:指向最小元素的指针,如果为空则返回错误