Spec-Zone.ru › OCaml 5.0

Модуль Очередь

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API