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

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

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

## RWSet

RWSet RWHashTable RWCollection RWCollectable

### 形式

      typedef RWSet Set;   // Smalltalk typedef.
      #include <rw/rwset.h>

      RWSet h ;

### 説明

  このクラスは、外部キーでアクセスできず、順序付けられていない要素の集合を表します。要素の重複は許可されていません。このクラスは、Smalltalk のクラス `Set` に対応しています。

  このクラスによって格納されるオブジェクトは、仮想関数 `hash()` および `isEqual()` を正しく定義した、抽象基底クラス RWCollectable を継承しなければなりません (RWCollectable を参照してください)。`hash()` は同じハッシュ値を持つオブジェクトを見つけるのに使用し、`isEqual()` は両方のオブジェクトが同じかどうかを確認するのに使用します。

  コレクションのメンバーで `isEqual(c)` が `TRUE` を返すものがあれば、項目 `c` は "コレクション内に既存である" とみなされます。この場合、メッセージ `insert(c)` では項目を追加せず、項目を重複させません。

  このクラスの反復子は、RWSetIterator です。

### 持続性

  多相

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

      RWSet (size_t n = RWDEFAULT_CAPACITY);

    `n` 個のハッシュバケットから成る空の集合を作成します。

      RWSet (const RWSet & h);

    コピーコンストラクタ。コレクション `h` のシャローコピーを作成します。

      virtual ~RWSet();

    `clear()` を呼び出します。

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

      virtual void
      apply(RWapplyCollectable ap, void*);

    代入演算子。コレクション `h` のシャローコピーを作成します。

      RWBoolean
      operator==(const RWSet& h);

    自分自身と `h` が同数の要素を持ち、かつ自分自身内の各キーについて `h` 内に `isEqual` な対応キーがあれば `TRUE` を返します。

      RWBoolean
      operator!=(const RWSet& h);

    上記の `operator==()` の結果の否定を返します。

      RWBoolean
      operator<=(const RWSet& h);

    自分自身が `h` の部分集合、つまり自分自身の各要素と `isEqual` な対応要素が `h` 内にあれば `TRUE` を返します。

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

      RWBoolean
      operator<(const RWSet& h);

    自分自身が `h` の真部分集合、つまり自分自身の各要素と `isEqual` な対応要素が `h` 内にあり、ただし、2 つの集合が等しくない場合に `TRUE` を返します。

      RWSet&
      operator*=(const RWSet& h);

    自分自身を、自分自身と `h` との積集合に設定し、自分自身を返します。

### 公開メンバー関数

      virtual void
      apply(RWapplyCollectable ap, void*);

    クラス RWCollectable から再定義した関数。通常、コレクションの各メンバーに対して、ユーザー定義関数 `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;

    項目 `target` と `isEqual` である自分自身内の項目を返すか、等しい項目がなければ NULL を返します。ハッシュを使用して検索の範囲を限定します。

      virtual unsigned
      hash() const;

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

      virtual RWCollectable*
      insert(RWCollectable* c);

    コレクションに項目 `c` を追加し、その項目を返します。`c` と `isEqual` な項目がすでにコレクション内にあれば、その項目を返し、新しい項目の追加は行いません。

      virtual RWClassID
      isA() const;

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

      virtual RWBoolean
      isEmpty() const;

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

      virtual RWBoolean
      isEqual(const RWCollectable* a) const;

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

      void
      intersectWith(const RWSet& h, RWSet& ret) const;

    自分自身と `h` との積集合を計算し、その結果を `ret` (希望する効果によって、空か、空ではない状態のどちらでもかまいません) に挿入します。`operator*=()` よりわずかに効率がよい場合があります。

      virtual size_t
      occurrencesOf(const RWCollectable* target) const;

    クラス RWCollection から再定義した関数。項目 `target` と `isEqual` である項目の数を返します。このコレクションでは重複は許可されていないので、0 か 1 だけを返します。

      virtual RWCollectable*
      remove(const RWCollectable* target);

    クラス RWCollection から再定義した関数。項目 `target` と `isEqual` である項目を取り除き、その項目を返します。等しい項目がなければ NULL を返します。

      virtual void
      removeAndDestroy(const RWCollectable* target);

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

      void
      resize(size_t n = 0);

    内部ハッシュテーブルのサイズを変更し、`n` スロットを残します。`n==0` の場合、`3*entries()/2` にサイズを変更します。

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

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

      RWStringID
      stringID();

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