Модуль Очередь
module Queue: sig .. end
Очереди «первым вошел, первым вышел».
Этот модуль реализует очереди (FIFO) с модификацией на месте.
- Предупреждение unsynchronized_access. Несинхронизированные обращения к очередям являются программистской ошибкой.
Несинхронизированные обращения
Несинхронизированные обращения к очереди могут привести к некорректному состоянию очереди. Поэтому одновременные обращения к очередям должны быть синхронизированы (например, с помощью Mutex.t).
type 'a t
Тип очередей, содержащих элементы типа 'a.
exception Empty
Выбрасывается, когда Queue.take или Queue.peek применяется к пустой очереди.
val create : unit -> 'a t
Возвращает новую, изначально пустую очередь.
val add : 'a -> 'a t -> unit
add x q добавляет элемент x в конец очереди q.
val push : 'a -> 'a t -> unit
push является синонимом для add.
val take : 'a t -> 'a
take q удаляет и возвращает первый элемент в очереди q, или выбрасывает Queue.Empty, если очередь пуста.
val take_opt : 'a t -> 'a option
take_opt q удаляет и возвращает первый элемент в очереди q, или возвращает None если очередь пуста.
- Since 4.08
val pop : 'a t -> 'a
pop является синонимом для take.
val peek : 'a t -> 'a
peek q возвращает первый элемент в очереди q, не удаляя его из очереди, или выбрасывает Queue.Empty, если очередь пуста.
val peek_opt : 'a t -> 'a option
peek_opt q возвращает первый элемент в очереди q, не удаляя его из очереди, или возвращает None если очередь пуста.
- Since 4.08
val top : 'a t -> 'a
top является синонимом для peek.
val clear : 'a t -> unit
Очищает все элементы из очереди.
val copy : 'a t -> 'a t
Возвращает копию заданной очереди.
val is_empty : 'a t -> bool
Возвращает true если заданная очередь пуста, false в противном случае.
val length : 'a t -> int
Возвращает количество элементов в очереди.
val iter : ('a -> unit) -> 'a t -> unit
iter f q применяет f по очереди ко всем элементам q, от наименее недавно добавленных к наиболее недавно добавленным. Сама очередь остается неизменной.
val fold : ('b -> 'a -> 'b) -> 'b -> 'a t -> 'b
fold f accu q эквивалентно List.fold_left f accu l, где l — список элементов q'а. Очередь остается неизменной.
val transfer : 'a t -> 'a t -> unit
transfer q1 q2 добавляет все элементы q1 в конец очереди q2, затем очищает q1. Эквивалентно последовательности iter (fun x -> add x q2) q1; clear q1, но работает за константное время.
Итераторы
val to_seq : 'a t -> 'a Seq.t
Итерирует по очереди в порядке «спереди-назад». Поведение не определено, если очередь изменяется во время итерации.
- Since 4.07
val add_seq : 'a t -> 'a Seq.t -> unit
Добавляет элементы из последовательности в конец очереди.
- Since 4.07
val of_seq : 'a Seq.t -> 'a t
Создаёт очередь из последовательности.
- Since 4.07
© 1995-2022 INRIA.
https://v2.ocaml.org/releases/5.0/htmlman/libref/Queue.html