Spec-Zone.ru › OCaml 4.14

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

module Queue: sig .. end

Очереди «первым вошел — первым вышел».

Этот модуль реализует очереди (FIFO) с модификацией на месте.

Предупреждение Этот модуль не потокобезопасен: каждое значение Queue.t должно быть защищено от одновременного доступа (например, с помощью 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/4.14/htmlman/libref/Queue.html

Spec-Zone.ru

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