Tools.h++ 7.0 クラスライブラリ・リファレンスマニュアル: RWBTree

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

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

## RWBTree

RWBTree RWCollection RWCollectable

### 形式

      #include <rw/btree.h>
      RWBTree a;

### 説明

  クラス RWBTree は、順序付き要素の集まりを表します。外部キーではアクセスできません。要素を重複することは許可されていません。クラス RWBTree に格納するオブジェクトは、抽象基底クラス RWCollectable を継承しなくてはなりません。各要素は、仮想関数 `compareTo()` が返す値に応じて内部的に順序が決まります (RWCollectable を参照してください)。

  このクラスは、クラス RWBinaryTree に比べて有利な点がいくつかあります。まず、B ツリーのバランスが自動的にとられます。クラス RWBinaryTree の場合、バランスをとるには明示的にメンバー関数 `balance()` を呼び出さなくてはなりません。各ノードはある数 (order) 以上の項目を持たなくてはなりません。デフォルトの order は 50 ですが、ヘッダファイル `<btree.h>` 内の静的定数 "`order`" の値をリセットして再コンパイルすることによって変更することができます。この値が大きければツリーは浅くなりますが、メモリーの利用効率は悪くなります。

  さらに、1 個のノードに多くのキーを保持できるので、クラス RWBTree はメモリーをあまり断片化しません。

### 持続性

  多相

### 公開コンストラクタ

      RWBTree();

    空の B ツリーを作成します。

      RWBTree(const RWBTree& btr);

    自分自身を `btr` のシャローコピーとして作成します。

### 公開デストラクタ

      virtual
      ~RWBTree();

    クラス RWCollection から再定義した関数。`clear()` を呼び出します。

### 公開メンバー演算子

      void
      operator=(const RWBTree& btr);

    自分自身に `btr` のシャローコピーを設定します。

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

    自分自身が `btr` の部分集合である場合、すなわち自分自身内の各項目について `btr` に等しい項目がある場合に `TRUE` を返します。

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

      RWBoolean
      operator==(const RWBTree& btr) const;

    自分自身と `btr` とが同じである場合、すなわち両方の項目数が同じで、かつ自身内の各項目について `btr` に等しい項目がある場合に `TRUE` を返します。

### 公開メンバー関数

      virtual void
      apply(RWapplyCollectable ap, void*);

    クラス RWCollection から再定義した関数。コレクションの各メンバーに対して最小メンバーから最大メンバーの順番に、ユーザー定義関数 `ap` を適用します。この関数では、項目に対してコレクションの順序を変えないでください。

      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` を返します。

      virtual unsigned
      hash() const;

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

      unsigned
      height() const;

    このクラスの特殊なメンバー関数。ツリーの高さ (ルートノードから終端ノード (葉) までのノード数として定義される) を返します。

      virtual RWCollectable*
      insert(RWCollectable* c);

    クラス RWCollection から再定義した関数。項目 `c` をコレクションに挿入し、その項目を返します。`compareTo()` が返す値に応じて項目 `c` を挿入します。`c` に等しいコレクションにすでに 1 つの項目が存在する場合、古い項目が返され、新しい項目は挿入されません。それ以外で挿入が失敗した場合は、`NULL` を返します。

      virtual RWClassID
      isA() const;

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

      virtual RWBoolean
      isEmpty() const;

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

      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 から継承した関数。

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

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

      RWStringID
      stringID();

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