[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
ツリーマップクラス。ツリーマップはキーオブジェクトから値オブジェクトへ の写像をあらわすデータ構造です。ツリーマップでは平衡木を使うということ 以外はハッシュテーブルと同じです。ツリーマップでは挿入と検索の手間は O(log n)です。
ハッシュテーブルとはちがい、キーの順序は保存されます。したがってキーの 順序どおりにトラバースするのは簡単で、キーの最小値/最大値を見つけたり、 指定したキーにもっとも近いキーを探すのも簡単です。
<tree-map>
クラスは<sequence>
および
<ordered-dictionary>
を継承しています。
<tree-map>
オブジェクトを作成して返します。
key=?、key<?はそれぞれ引
数を2つ受け取り真偽値を返す手続きであり、要素のキーが渡されます。
key=?は、2つの引数a, b が同値の場合に真を、それ以外の場合に#f
を
返す手続きです。key<?は、a < b
が成り立つ場合に真を、それ以外の
場合に#f
を返す手続きです。
tree-mapのコピーを作り、それを返します。返された木に対す る破壊的操作は、元の木に影響を与えません。
tree-mapが要素を持たないなら#t
を、そうでなければ#f
を
返します。
tree-map内の要素の個数を返します。
tree-mapにキーkeyを持つエントリがあれば#t
を、
そうでなければ#f
を返します。
キーkeyをtree-mapから探します。見つかればkeyに対応する値を返 します。キーが見つからなかった場合、fallbackが与えられていればそれ を返し、そうでなければエラーを報告します。
キーkeyと対応する値valueをtree-mapに挿入します。もし、keyと、 key=?における意味で同じキーがすでに存在する場合、キーに対応する値 は新たな値に置き換えられます。
tree-mapからキーkeyを持つエントリを削除します。keyを持つエン
トリが実際に存在して削除された場合は#t
を、エントリが存在しなかっ
た場合は#f
を返します。
tree-map内の全てのエントリを削除します。
tree-map-push!
等のより一般的なバージョンです。木の探索が一度
しか行われないことを除いては、基本的に次のように動作します。
(let ((tmp (proc (tree-map-get tree-map key fallback)))) (tree-map-put! tree-map key tmp) tmp) |
tree-map中の、キーkeyに対応する値にvalueをコンスし、
それをkey
に対する新たな値とします。もしkeyに対応する値がまだ無ければ、新た
なエントリが作成され、(list value)
がその値となります。
tree-map中のキーkeyに対応する値が存在し、かつペアであった場合 に、そのエントリの値を元の値のcdrで置き換え、元の値のcarを返します。 keyに対応する値が存在しないかペアではなかった場合、tree-mapは 変更されず、fallbackが与えられていればそれが返され、与えられていな ければエラーが報告されます。
それぞれ、tree-mapに含まれる最小および最大のキーを探索し、その
キーと値のペアを返します。tree-mapが空だった場合は#f
が返されます。
それぞれ、tree-mapに含まれる最小および最大のキーを探索し、そ
のエントリをtree-mapから削除したうえで、そのキーと値のペアを
返します。tree-mapが空だった場合は#f
が返されます。
tree-mapの各要素に対し、(key, value, seed) -> seed
の型を持つ
procを適用してゆきます。
tree-map-fold
とtree-map-fold-right
の違いは
fold
のfold-right
違いと同じ、すなわち
結合の方向にあります。
tree-map-fold: (proc Kn Vn (proc Kn-1 Vn-1 ... (proc K0 V0 seed))) tree-map-fold-right (proc K0 V0 (proc K1 V1 ... (proc Kn Vn seed))) |
例:
(define tree (alist->tree-map '((3 . a) (7 . b) (5 . c)) = <)) (tree-map-fold tree list* '()) ⇒ (7 b 5 c 3 a) (tree-map-fold-right tree list* '()) ⇒ (3 a 5 c 7 b) |
These procedures search the entry which has the closest key
to the given probe. If such an entry is found, returns
two values, its key and its value. Otherwise, returns two values,
fallback-key and fallback-value, both defaulted to #f
.
The criteria of “closest” differ slightly among these procedures;
tree-map-floor
finds the maximum key which is no greater than
probe; tree-map-ceiling
finds the minimum key which is
no less than probe; tree-map-predecessor
finds the
maximum key which is strictly less than probe;
and tree-map-successor
finds the minimum key which
is strictly greater than probe.
Like tree-map-floor
etc., but only returns the key of
the found entry (or fallback-key if there's no entry which satisfies
the criteria).
Like tree-map-floor
etc., but only returns the value of
the found entry (or fallback-value if there's no entry which satisfies
the criteria).
それぞれ、tree-map内の全てのキーまたは値をリストにして返しま す。返されるリストの要素はキーの昇順に並んでいます。
tree-map含まれる要素を連想リストにして返します。返される連 想リストのキーは昇順に並んでいます。
key=?, key<? によって新たなtreemapを作成し、 連想リストalistに含まれる要素を追加した上で返します。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] |
This document was generated by Shiro Kawai on November, 22 2009 using texi2html 1.78.