Owl_utils_heapval make : ('a -> 'a -> int) -> 'a t``make cmp`` creates an empty min heap, using ``cmp`` as a comparison function.
val make_int : ?initial_size:int -> (int -> int -> int) -> int t``make_int ?initial_size cmp`` creates an empty integer heap, using ``cmp`` as a comparison function and pre-allocates a space of ``initial_size`` elements.
val make_float : ?initial_size:int -> (float -> float -> int) -> float t``make_float ?initial_size cmp`` creates an empty float heap, using ``cmp`` as a comparison function and pre-allocates a space of ``initial_size`` elements.
val size : 'a t -> int``size heap`` returns the number of elements in the heap.
val push : 'a t -> 'a -> unit``push heap x`` pushes ``x`` into ``heap``. Time complexity is ``O(log(n))``, where n is the size of ``heap``.
val pop : 'a t -> 'a``pop heap`` pops the minimal element from ``heap``. It raises an exception if the heap is empty. Time complexity is ``O(log(n))``, where n is the size of ``heap``.
val peek : 'a t -> 'a``peek heap`` returns the value of the minimal element in ``heap`` but it does not remove the element from the heap. Raises an exception if the heap is empty. Time complexity is ``O(1)``.
val is_empty : 'a t -> bool``is_empty heap`` returns ``true`` if ``heap`` is empty, ``false`` otherwise.
val to_array : 'a t -> 'a array``to_array heap`` returns the elements in ``heap`` into an (unsorted) array.