バナーをクリックすれば目次に戻ります

Copyright 1999 Rogue Wave Software
Copyright 1999 Sun Microsystems, Inc.


RWBTreeDictinary

RWBTreeDictionary RWBTree RWCollection RWCollectable

形式

#include <rw/btrdict.h>
RWBTreeDictionary a;

説明

このディクショナリクラスは B ツリーとして実装されており、キーと値の対を格納したり取り出すために使用します。キーも値も抽象基底クラス RWCollectable を継承する必要があります。仮想関数 compareTo() が返すキーの値に応じて、各要素の順序が内部的に決まります (RWCollectable を参照してください)。キーの重複は許可されていません。

B ツリーはバランスが取れたものになります。つまり、各ノードはある数 (order) 以上の項目を持たなくてはなりません。デフォルトの order は 50 ですが、ヘッダファイル <btree.h> 内の静的定数 "order" の値を変更し再コンパイルすることによって変更することができます。この値が大きければツリーは浅くなりますが、メモリーの利用効率は悪くなります。

持続性

多相

公開コンストラクタ

RWBTreeDictionary();

空の B ツリーディクショナリを作成します。

公開メンバー演算子

RWBoolean
operator<=(const RWBTreeDictionary& btr) const;

自分自身が btr の部分集合である場合、TRUE を返します。つまり、自分自身にあるすべての項目に対して、等しい項目が btr になければなりません。この演算子は、C++ 標準ライブラリの実装を使用してコンパイルしなければ、明示的には存在しません。これは通常 RWBTree から継承されます。


注 - 標準 C++ ライブラリが存在する状態で RWBTree から継承する場合、この演算子を変更し、関数を明示的に呼び出すことをお薦めします。C++ の多重定義による解決方法では、継承されたクラスメンバーを対象とする、標準ライブラリが提供する大域演算子を選択します。これらの大域定義は、部分集合関係のような部分的な半順序付けには適していません。

公開メンバー関数

void
applyToKeyAndValue(RWapplyKeyAndValue ap,void*);

クラス RWCollection から再定義した関数。コレクションのキーと値のそれぞれの対に対して、最小要素から最大要素の順番でユーザー定義関数 ap を適用します。

RWBinaryTree
asBinaryTree();
RWBag
asBag() const;
RWSet
asSet() const;
RWOrdered
asOrderedCollection() const;
RWBinaryTree
asSortedCollection() const:

RWBTreeDictionaryRWBagRWSetRWOrdered、または、RWBinaryTree に変換します。1 つのディクショナリにはキーと値の対が含まれるため、この呼び出しの結果は、RWCollectableAssociations を持つコンテナになることに注意してください。また、返す値も、そのデータのコピーであることに注意してください。大きなコレクションの場合、この操作には時間がかかります。operator+=() を使用して各 RWCollectableAssociation をこのディクショナリから、選択したコレクションに挿入する方法も利用できます。

virtual RWspace
binaryStoreSize() const;

クラス RWCollection から継承した関数。

virtual void
clear();

クラス RWCollection から再定義した関数。コレクションからすべてのキーと値の対を取り除きます。

virtual void
clearAndDestroy();

クラス RWCollection から再定義した関数。コレクションからすべてのキーと値の対を取り除き、キーおよび値そのものも削除します。

virtual int
compareTo(const RWCollectable* a) const;

クラス RWCollectable から継承した関数。

virtual RWBoolean
contains(const RWCollectable* target) const;

クラス RWCollection から継承した関数。

virtual size_t
entries() const;

クラス RWCollection から再定義した関数。

virtual RWCollectable*
find(const RWCollectable* target) const;

クラス RWCollection から再定義した関数。オブジェクト target と等しいコレクション内のキーを返します。等しいキーがなければ NULL を返します。

RWCollectable*
findKeyAndValue(const RWCollectable* target,
                RWCollectable*& v) const;

オブジェクト target と等しいコレクション内のキーを返します。等しいキーがなければ NULL を返します。値は v にセットされます。この関数を呼び出す前に v を定義しなければなりません。

RWCollectable*
findValue(const RWCollectable* target) const;

オブジェクト target と等しいキーの値を返します。等しいキーがなければ NULL を返します。

RWCollectable*
findValue(const RWCollectable* target,
          RWCollectable* newValue);

オブジェクト target と等しいキーの値を返します。等しいキーがなければ NULL を返します。等しいキーがあった場合、値は新しい値 (newValue) に置き換わります。

virtual unsigned
hash() const;

クラス RWCollectable から継承した関数。

unsigned
height() const;

クラス RWBTree から継承した関数。

RWCollectable*
insertKeyAndValue(RWCollectable* key,RWCollectable* value);

キーと値の対をコレクションに追加し、追加が成功すればそのキーを返します。キーがすでにコレクション内に存在すれば NULL を返します。

virtual RWClassID
isA() const;

クラス RWCollectable から再定義した関数で、__RWBTREEDICTIONARY を返します。

virtual RWBoolean
isEmpty() const;

クラス RWBTree から継承した関数。

virtual RWBoolean
isEqual(const RWCollectable* a) const;

クラス RWCollectable から継承した関数。

virtual size_t
occurrencesOf(const RWCollectable* target) const;

クラス RWCollection から再定義した関数。target と等しいキーの数を返します。重複は許可されていないので、0 か 1 しか返しません。

virtual RWCollectable*
remove(const RWCollectable* target);

クラス RWCollection から再定義した関数。オブジェクト target と等しいキーを、対応する値と一緒に取り除いてそのキーを返します。等しいキーがない場合は NULL を返します。

virtual void
removeAndDestroy(const RWCollectable* target);

クラス RWCollection から再定義した関数。オブジェクト target と等しいキーを、対応する値と一緒に取り除いて削除します。キーと値そのものも削除されます。等しいキーがなければ何も行いません。

RWCollectable*
removeKeyAndValue(const RWCollectable* target,
                  RWCollectable*& v);

オブジェクト target と等しいキーを、対応する値と一緒に取り除いて、そのキーを返します。等しいキーがなければ NULL を返します。値は v にセットされます。この関数を呼び出す前に v を定義する必要があります。

virtual void
restoreGuts(RWvistream&);
virtual void
restoreGuts(RWFile&);
virtual void
saveGuts(RWvostream&) const;
virtual void
saveGuts(RWFile&) const;

クラス RWCollection から継承した関数。

virtual RWCollection*
select(RWtestCollectable testfunc, void* x) const;

RWBTreeDictionary 内の各項目のキーについて、tst が指す関数を評価します。この関数が TRUE を返すキーと値を、ヒープから割り当てた新しい RWBTreeDictionary に挿入し、そしてこの新しいコレクションへのポインタを返します。新しいディクショナリはヒープから割り当てたものなので、使用後にこれを削除する責任があります。これは仮想関数ではありません。

virtual RWCollection*
select(RWtestCollectablePair testfunc, void* x) const;

RWBTreeDictionary 内の各項目のキーおよび値について、tst が指す関数を評価します。この関数が TRUE を返す対象となるキーと値を、ヒープから割り当てられた新しい RWBTreeDictionary に挿入し、そしてこの新しいコレクションへのポインタを返します。新しいディクショナリはヒープから割り当てられるため、使用後にこれを削除する責任があります。これは仮想関数ではありません。

RWStringID
stringID();

(仮想関数として動作) クラス RWCollectable から継承した関数。