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

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

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:

    RWBTreeDictionary を RWBag、RWSet、RWOrdered、または、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 から継承した関数。