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
priority
New priority queue containing the given pairs.
to
[k
, v
] (k
, v
) mut-priority-queue
(a
(k
, v
) tuple2
array
) k
priority
priority
Copies an array to a new priority queue.
clear
[k
, v
] void
(a
(k
, v
) mut-priority-queue
) k
priority
priority
Removes all pairs from the queue.
is-empty
[k
, v
] bool
(a
(k
, v
) mut-priority-queue
) k
priority
priority
True iff a.size == 0
.
size
[k
, v
] nat64
(a
(k
, v
) mut-priority-queue
) k
priority
priority
Number of pairs in the queue.
This is O(n).
~=
[k
, v
] void
(a
(k
, v
) mut-priority-queue
, anonymous
(k
, v
) tuple2
) k
priority
priority
Adds a pair to the queue.
This is O(log n).
pop
[k
, v
] (k
, v
) tuple2
?
(a
(k
, v
) mut-priority-queue
) k
priority
priority
Removes 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
priority
pop-value
[k
, v
] v
?
(a
(k
, v
) mut-priority-queue
) k
priority
priority
Like pop
, but discards the key.
copy
[k
, v
] (k
, v
) mut-priority-queue
(a
(k
, v
) mut-priority-queue
) k
priority
priority
Copy 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
priority
mut-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