バナーをクリックすれば目次に戻ります
Copyright 1999 Rogue Wave Software
Copyright 1999 Sun Microsystems, Inc.
RWBTree
RWBTree RWCollection RWCollectable
#include <rw/btree.h> RWBTree a;
このクラスは、クラス RWBinaryTree に比べて有利な点がいくつかあります。まず、B ツリーのバランスが自動的にとられます。クラス RWBinaryTree の場合、バランスをとるには明示的にメンバー関数 balance() を呼び出さなくてはなりません。各ノードはある数 (order) 以上の項目を持たなくてはなりません。デフォルトの order は 50 ですが、ヘッダファイル <btree.h> 内の静的定数 "order" の値をリセットして再コンパイルすることによって変更することができます。この値が大きければツリーは浅くなりますが、メモリーの利用効率は悪くなります。
さらに、1 個のノードに多くのキーを保持できるので、クラス RWBTree はメモリーをあまり断片化しません。
RWBTree();
RWBTree(const RWBTree& btr);
virtual ~RWBTree();
void operator=(const RWBTree& btr);
RWBoolean operator<=(const RWBTree& btr) const;
注 - 標準 C++ ライブラリが存在する状態で RWBTree から継承する場合、この演算子を変更し、関数を明示的に呼び出すことをお薦めします。C++ の多重定義による解決方法では、継承されたクラスメンバーを対象とする、標準ライブラリが提供する大域演算子を選択します。これらの大域定義は、部分集合関係のような半順序付けには適していません。
RWBoolean operator==(const RWBTree& btr) const;
virtual void apply(RWapplyCollectable ap, void*);
virtual RWspace binaryStoreSize() const;
virtual void clear();
virtual void clearAndDestroy();
virtual int compareTo(const RWCollectable* a) const;
virtual RWBoolean contains(const RWCollectable* target) const;
virtual size_t entries() const;
virtual RWCollectable* find(const RWCollectable* target) const;
virtual unsigned hash() const;
unsigned height() const;
virtual RWCollectable* insert(RWCollectable* c);
virtual RWClassID isA() const;
virtual RWBoolean isEmpty() const;
virtual RWBoolean isEqual(const RWCollectable* a) const;
virtual size_t occurrencesOf(const RWCollectable* target) const;
virtual RWCollectable* remove(const RWCollectable* target);
virtual void removeAndDestroy(const RWCollectable* target);
virtual void restoreGuts(RWvistream&); virtual void restoreGuts(RWFile&); virtual void saveGuts(RWvostream&) const; virtual void saveGuts(RWFile&) const;
RWStringID stringID();