crow/col/mut-priority-queue.crow (source)
mut-priority-queue[k, v] record mut
(has non-public fields)
Mutable priority queue.
Elements are key-value pairs. Pairs are sorted by key.
Popping removes the pair with the lowest key.
If two pairs have the same key, the second pair added will be popped second.
new[k, v] (k, v) mut-priority-queue(...a (k, v) tuple2 array) k priority
priorityNew priority queue containing the given pairs.
to[k, v] (k, v) mut-priority-queue(a (k, v) tuple2 array) k priority
priorityCopies an array to a new priority queue.
clear[k, v] void(a (k, v) mut-priority-queue) k priority
priorityRemoves all pairs from the queue.
is-empty[k, v] bool(a (k, v) mut-priority-queue) k priority
priorityTrue iff a.size == 0.
size[k, v] nat64(a (k, v) mut-priority-queue) k priority
priorityNumber of pairs in the queue.
This is O(n).
~=[k, v] void(a (k, v) mut-priority-queue, anonymous (k, v) tuple2) k priority
priorityAdds a pair to the queue.
This is O(log n).
pop[k, v] (k, v) tuple2?(a (k, v) mut-priority-queue) k priority
priorityRemoves and returns the pair with the lowest key.
Returns an empty option iff the queue was empty (before calling pop).
This is amortized O(log n).
pop-if[k, v] (k, v) tuple2?(a (k, v) mut-priority-queue, f mut bool((k, v) tuple2)) k priority
prioritypop-value[k, v] v?(a (k, v) mut-priority-queue) k priority
priorityLike pop, but discards the key.
copy[k, v] (k, v) mut-priority-queue(a (k, v) mut-priority-queue) k priority
priorityCopy pairs to a new priority queue.
This is O(n).
to[k, v] (k, v) tuple2 array(a (k, v) mut-priority-queue) k priority
prioritymut-priority-queue-builder[k, v] record mut
(has non-public fields)
build[k, v] (k, v) mut-priority-queue(a build-options, f mut void((k, v) mut-priority-queue-builder)) k priority
priority~=[k, v] void(a (k, v) mut-priority-queue-builder, value (k, v) tuple2) k priority
priority