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

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


RWHashDictionary

RWHashDictionary RWSet RWHashTable RWCollection RWCollectable

形式

typedef RWHashDictionary Dictionary;  // Smalltalk typedef.
#include <rw/hashdict.h>
RWHashDictionary  a ;

説明

このクラスは、外部キーでアクセスできる、順序付けられていない値の集合を表します。キーの重複は許可されていません。このクラスは、キーと値の関連情報から成るハッシュテーブルとして実装されます。キーと値は、キーに対して仮想関数 hash() および isEqual() を適切に定義した、抽象基底クラス RWCollectable から継承しなければなりません。

このクラスは、Smalltalk のクラス Dictionary に対応しています。

持続性

なし

公開コンストラクタ

RWHashDictionary(size_t n = RWDEFAULT_CAPACITY);

n 個のハッシュバケットから成る空のハッシュディクショナリを作成します。

RWHashDictionary(const RWHashDictionary& hd);

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

公開メンバー演算子

void
operator=(const RWHashDictionary& hd);

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

RWBoolean
operator<=(const RWHashDictionary& hd) const;

自分自身の各キーと値の対について hd 内に isEqual であるキーがあれば、TRUE を返します。またこのとき、対応する値も等しくなければなりません。


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

自分自身と hd が同じ数のエントリを持ち、かつ自分自身の各キーと値の対について hd 内に isEqual であるキーがあれば、TRUE を返します。またこのとき、対応する値も等しくなければなりません。

公開メンバー関数

void
applyToKeyAndValue(RWapplyKeyAndValue ap, void* x);

コレクション内の各キーと値の対に対して、ユーザー定義関数 ap を適用します。項目に対して、特定の順序ではアクセスしません。特定の型でない引数 x を、 ap 関数に渡すことが可能です。

RWBinaryTree
asBinaryTree();
RWBag
asBag() const;
RWSet
asOrderedCollection() const;
asSet() const;
RWOrdered
RWBinaryTree
asSortedCollection() const;

RWHashDictionaryRWBagRWSetRWOrdered、または RWBinaryTree に変換します。ディクショナリにはキーと値の対が含まれるので、この呼び出しの結果、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;

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

virtual RWCollectable*
find(const RWCollectable* target) const;

クラス RWCollection から再定義した関数。オブジェクト targetisEqual であるキーを返します。等しいキーがなければ NULL を返します。

RWCollectable*
findKeyAndValue(const RWCollectable* target,
     RWCollectable*& v) const;

target が指す項目と isEqual であるキーを返します。等しいキーがなければ NULL を返します。値は v に設定されます。この関数を呼び出す前に、ユーザーは v を定義しておく必要があります。

RWCollectable*
findValue(const RWCollectable* target) const;

項目 targetisEqual であるキーの値を返します。等しいキーがなければ NULL を返します。

RWCollectable*
findValue(const RWCollectable* target,
RWCollectable* newValue);

項目 targetisEqual であるキーの、値を返します。等しいキーがなければ NULL を返します。キーが見つかった場合は、値を newValue に置き換えます。

virtual unsigned
hash() const;

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

RWCollectable*
insertKeyAndValue(RWCollectable* key,RWCollectable* value);

キーと値の対をコレクションに追加し、処理が成功すればそのキーを返し、そのキーがすでにコレクション内に存在すれば NULL を返します。

virtual RWClassID
isA() const;

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

virtual RWBoolean
isEmpty() const;

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

virtual RWBoolean
isEqual(const RWCollectable* a) const;

RWCollectable から継承した関数。

virtual size_t
occurrencesOf(const RWCollectable* target) const;

クラス RWSet から継承した関数。項目 targetisEqual であるキーの数を返します。キーの重複は許されないので、0 か 1 しか返しません。

virtual RWCollectable*
remove(const RWCollectable* target);

クラス RWCollection から再定義した関数。項目 targetisEqual であるキーと、対応する値を一緒に取り除き、そのキーを返します。等しいキーがなければ NULL を返します。

virtual void
removeAndDestroy(const RWCollectable* target);

クラス RWCollection から再定義した関数。項目 targetisEqual であるキーと、対応する値を一緒に削除します。キーと値そのものも削除します。等しいキーがなければ何も実行されません。

RWCollectable*
removeKeyAndValue(const RWCollectable* target,
     RWCollectable*& v);

項目 targetisEqual であるキーと、対応する値を一緒に取り除き、そのキーを返します。等しいキーがなければ NULL を返します。値は v に設定されます。この関数を呼び出す前に、ユーザーは v を定義する必要があります。

void
resize(size_t n = 0);

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

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;

RWHashDictionary における各項目のキーについて、tst が指す関数を評価します。この関数が TRUE を返す対象となるキーと値を、ヒープから割り当てられた新しい RWHashDictionary に挿入し、そしてこの新しいコレクションへのポインタを返します。新しいディクショナリはヒープから割り当てられるため、終了時これを削除する責任があります。これは、RWCollection から継承した非仮想関数を隠蔽する virtual 関数です。

virtual RWCollection*
select(RWtestCollectablePair testfunc, void* x) const;

RWHashDictionary における各項目のキーおよび値について、tst が指す関数を評価します。この関数が TRUE を返す対象となるキーと値を、ヒープから割り当てられた新しい RWHashDictionary に挿入し、そしてこの新しいコレクションへのポインタを返します。新しいディクショナリはヒープから割り当てられるため、終了時これを削除する責任があります。これは、RWCollection から継承した非仮想関数を隠蔽する virtual 関数です。

RWStringID
stringID();

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