Queue

このページは最後に更新されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

last mod. 2009-09-10 (木) 17:33:46

Chapter 20 標準ライブラリ

module Queue: sig  end

先入れ先出し (First-in first-out) のキューです。 このモジュールでは、内部置き換え方式のキューが実装されています。


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 の最初の要素を取り除いて返します。キューが空である場合は例外 Empty を発生します。

val pop : 'a t -> 'a

pop は take の別名です。

val peek : 'a t -> 'a

peek q はキュー q の最初の要素を返します (取り除きません) 。キューが空である場合は例外 Empty を発生します。

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 は q のすべての要素に次々と関数 f を適用します。適用順は先頭から終端 (最も最近入れられた要素が最後) です。キュー自体は変更されません。

val fold : ('a -> 'b -> 'a) -> 'a -> 'b t -> 'a

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 と同じ動作をしますが、定数時間で動きます。

新規 編集 添付