[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.48 util.queue - キュー

Module: util.queue

キュー(FIFO)機能を提供します。この実装は安全さよりスピードに重点を置いています。 キューは単に先頭と末尾のpairで表現され、多くのオペレーションでキューが正しいかどうかは チェックされません。

SLIB (slib - SLIBインタフェース参照)にはより安全なキューの実装があります。 このAPIはSLIBの実装の上位互換です。特定の手続きや構造体の中だけで使うため、 厳しいチェックが必要でない場合にはこのモジュールを使うのが良く、そうでない場合は SLIBのものが良いでしょう。要求仕様によって使い分けて下さい。

Function: make-queue

空のキューを作って返します。

Function: queue? obj

objがキューであれば#tを返します。この操作に限り、objが 本当にキューの構造をしているかどうかのチェックがなされます。

Function: queue-empty? queue

objが空のキューであれば#tを返します。

Function: queue-length queue

キューの中にあるアイテムの数を返します。

Function: copy-queue queue

キューqueueのコピーを返します。

Function: enqueue! queue obj &optional more-objs …

objをキューqueueの末尾に追加します。 一つ以上のobjを与えることができ、その場合はそれらが順にenqueueされます。 (註:SLIBのenqueue!はオプショナルな引数を取りません)。

Function: queue-push! queue obj &optional more-objs …

objをキューqueueの先頭に追加します。 一つ以上のobjを与えることができ、その場合はそれらが順にpushされます。 (註:SLIBのqueue-push!はオプショナルな引数を取りません)。

Function: enqueue-unique! queue eq-proc obj &optional more-objs …
Function: queue-push-unique! queue eq-proc obj &optional more-objs …

objが既にqueueの中に含まれている場合にはqueueを 変更しないことを以外には、enqueue!およびqueue-push!と同じ 動作をします。objが含まれているかどうかの検査は 2引数の関数eq-procで行います。

Function: dequeue! queue
Function: queue-pop! queue

キューqueueの先頭からひとつ要素を取って返します。 二つの手続きは全く同じ動作をします。queue-pop!queue-push!と ペアで使われていることを強調したいときに使うと良いでしょう。キューが空の場合は エラーが報告されます。

Function: dequeue-all! queue

キューの全ての内容をリストにして返します。キューそのものは空になります。 キューが既に空の場合は空リストが返されます。 下のqueue->listも参照してください。

Function: queue-front queue
Function: queue-rear queue

キューqueueの先頭もしくは末尾の要素を返します。キューそのものは変更されません。 キューが空の場合はエラーが報告されます。

Function: list->queue list

与えられたリストlistの各要素をその順で持つようなキューを作成して返します。

Function: queue->list queue

キューqueueの内容をリストにして返します。 dequeue-all!と異なり、キューそのものの内容は変化しません。

Gaucheではqueue->listは新しいリストをアロケートしてキューの 内容をコピーします (dequeue-all!はコピーをせずにキューの内部の リストをそのまま返します)。組込みでqueue->listを持っているScheme 実装がいくつかありますが、その中にはqueue->listがキューの 内容をコピーすることを保証していないものがあるので、それらの処理系と 共有するコードではqueue->listがリストをコピーすることを あてにしない方が良いでしょう。

Function: find-in-queue pred queue

キュー内の要素のうち述語predを満たす最初の要素を返します。 引数の順序はSRFI-1のfindに揃えました (リストの探索参照)。

Function: remove-from-queue! pred queue

キューから、述語predを満たす要素を全て取り除きます。 要素が削除された場合は#tが、そうでなければ#fが返されます。 引数の順序はSRFI-1のremoveに揃えました (リストのフィルタおよび分割参照)。

移植性に関する註:Scheme48には、述語ではなく削除するオブジェクトそのものを取る delete-from-queue!がありますが、引数の順序が逆(キューが先)になっています。 まぎらわしい衝突を避けるため、敢えてdelete-from-queue!は 提供しませんでした。remove-from-queue!を使えば、Scheme48互換の方法でも、 あるいはSRFI-1と一貫性のある方法でもdelete-from-queue!をすぐ書けるでしょう。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]

This document was generated by Shiro Kawai on November, 22 2009 using texi2html 1.78.