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

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;

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

virtual unsigned
hash() const;

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

virtual RWCollectable*
insert(RWCollectable* c);

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

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 から再定義した関数。項目 targetisEqual である項目の数を返します。このコレクションでは重複は許可されていないので、0 か 1 だけを返します。

virtual RWCollectable*
remove(const RWCollectable* target);

クラス RWCollection から再定義した関数。項目 targetisEqual である項目を取り除き、その項目を返します。等しい項目がなければ 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 から継承した関数。