Тип модуля Pqueue.Min
module type Min = sig .. end
Выходная сигнатура функтора Pqueue.MakeMin.
Очереди с приоритетом минимума
type t
Тип очередей с приоритетом.
type elt
Тип элементов очереди с приоритетом.
val create : unit -> t
Возвращает новую, изначально пустую очередь с приоритетом.
val length : t -> int
Возвращает количество элементов в очереди с приоритетом.
val is_empty : t -> bool
is_empty q true тогда и только тогда, когда q пуста, то есть тогда и только тогда, когда length q = 0.
val add : t -> elt -> unit
add q x добавляет элемент x в очередь с приоритетом q.
val add_iter : t -> ((elt -> unit) -> 'x -> unit) -> 'x -> unit
add_iter q iter x добавляет каждый элемент x в конец q. Это iter (add q) x.
val min_elt : t -> elt option
min_elt q — элемент q с минимальным приоритетом или None, если очередь пуста. Очередь не изменяется.
val get_min_elt : t -> elt
get_min_elt q возвращает элемент q с минимальным приоритетом или вызывает исключение Invalid_argument, если очередь пуста. Очередь не изменяется.
val pop_min : t -> elt option
pop_min q удаляет и возвращает элемент очереди q с минимальным приоритетом или возвращает None, если очередь пуста.
val remove_min : t -> unit
remove_min q удаляет элемент очереди q с минимальным приоритетом. Ничего не делает, если q пуста.
val clear : t -> unit
clear q удаляет все элементы из q.
val copy : t -> t
copy q — новая очередь с приоритетом, содержащая те же элементы, что и q.
Преобразования из других структур данных
val of_array : elt array -> t
of_array a возвращает новую очередь с приоритетом, содержащую элементы массива a. Выполняется за линейное время.
val of_list : elt list -> t
of_list l возвращает новую очередь с приоритетом, содержащую элементы списка l. Выполняется за линейное время.
val of_iter : ((elt -> unit) -> 'x -> unit) -> 'x -> t
of_iter iter x возвращает новую очередь с приоритетом, содержащую элементы x, полученные из iter.
Например, of_iter Seq.iter s возвращает новую очередь с приоритетом, содержащую все элементы последовательности s (если она конечна).
Выполняется за линейное время (не считая времени, затраченного на iter).
Итерация
Порядок обхода элементов очереди с приоритетом не определён.
Изменение очереди с приоритетом (добавление или удаление элементов) во время её обхода считается ошибкой программирования. Такая ошибка может быть обнаружена и сообщена реализацией базового динамического массива, но это не гарантируется.
val iter_unordered : (elt -> unit) -> t -> unit
iter_unordered f q применяет f ко всем элементам в q. Порядок передачи элементов в f не определён.
Поведение не определено, если очередь с приоритетом изменяется с помощью f во время итерации.
val fold_unordered : ('acc -> elt -> 'acc) -> 'acc -> t -> 'acc
fold_unordered f accu q — это (f (... (f (f accu x1) x2) ...), где
xn)x1,x2,...,xn — элементы q. Порядок передачи элементов в f не определён.
Поведение не определено, если очередь с приоритетом изменяется с помощью f во время итерации.
© 1995-2026 INRIA.
https://ocaml.org/manual/5.5/api/Pqueue.Min.html