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

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

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

## RWTValHashMap<K,T,H,EQ>

### 形式

      #include <rw/tvhdict.h>
      RWTValHashMap<K,T,H,EQ> m;

  > 注 - 標準 C++ ライブラリがある場合は、ここで述べるインタフェースを使用します。標準 C++ ライブラリがない場合は、付録 A に記載する RWTValHashDictionary 用インタフェースを使用してください。

### 説明

  このクラスは、それぞれが型 `T` と関連付けられた項目を持つキーのコレクションを維持します。これらのペアは、型 `H` のハッシュオブジェクトに従って格納されます。`H` は、次の公開メンバーを介して、型 `K` の要素に対するハッシュ関数を提供しなければなりません。

  `unsigned long operator()(const K& x)`

  コレクション中の同値キーは、型 `EQ` の同等オブジェクトにもとづいてグループ化されます。`EQ` は、次の公開メンバーを介して、このグループ化を保証しなければなりません。

  `bool operator()(const K& x, const K& y)`

  これは、`x` と `y` が等しい場合に真を返します。

  RWTValHashMap<K,T,H,EQ> は、コレクション内の既存のキーと等しいキーは受け付けません (RWTValHashMultiMap<K,T,H,EQ> には、互いに等しい複数のキーを含めることができます)。等しいかどうかは、`==` 演算子ではなく、比較オブジェクトにもとづいて判定されます。

### 持続性

  同形

### 関連クラス

  クラス RWTValHashMultiMap<K,T,H,EQ> は、互いに等しい複数のキーを受け付けるコレクションに対して同じインタフェースを提供します。

  クラス rw_hashmap<K,T,H,EQ> は、このコレクションの基礎となる実装として使用される C++ 標準準拠コレクションです。

### 公開 Typedef

      typedef rw_hashmap<K,T,H,EQ>                   container_type;
      typedef container_type::iterator               iterator;
      typedef container_type::const_iterator         const_iterator;
      typedef container_type::size_type              size_type;
      typedef pair <const K,T>                       value_type;
      typedef K                                      key_type;
      typedef T                                      data_type;
      typedef pair <const K,T>&                      reference;
      typedef pair <const K,T>&                      const_reference;

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

      RWTValHashMap<K,T,H,EQ>();

    空のマップを作成します。

      RWTValHashMap<K,T,H,EQ>(const rw_hashmap<K,T,H,EQ>& m);

    `m` のすべての要素をコピーすることによって、マップを作成します。

      RWTValHashMap<K,T,H,EQ>
      (const H& h, size_type sz = RWDEFAULT_CAPACITY);

    ハッシュオブジェクト `h` を使用し、初期容量 `sz` を持つ空ハッシュマップを作成します。

      RWTValHashMap<K,T,H,EQ>(const RWTValHashMap<K,T,H,EQ>& rwm);

    コピーコンストラクタ。

      RWTValHashMap<K,T,H,EQ>(const value_type* first,
           const value_type* last);

    `first` が指す `value_type` ペアの配列から `last` が指すペアまで (ただし、そのペアは含みません)、要素をコピーすることによって、マップを作成します。

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

      RWTValHashMap<K,T,H,EQ>&
      operator=(const RWTValHashMap<K,T,H,EQ>& m);
      RWTValHashMap<K,T,H,EQ>&
      operator=(const rw_hashmap<K,T,H,EQ>& m);

    自分自身のすべての要素を破棄し、`m` からすべての関連付けをコピーすることによって、それらを置き換えます。

      bool
      operator==(const RWTValHashMap<K,T,H,EQ>& m) const;
      bool
      operator==(const rw_hashmap<K,T,H,EQ>& m) const;

    自分自身が `m` と等しい場合は `TRUE` を返し、それ以外の場合は `FALSE` を返します。2 つのコレクションのエントリ数が同じで、両方のコレクションを反復したときに個々のペアが互いに等しい場合、両者は等しいと言えます。

      T&
      operator[](const K& key);

    `key` を検索し、関連付けられた項目への参照を返します。辞書にキーがない場合、型 `T` のデフォルトコンストラクタが提供する関連付けられた項目がキーに追加されます。

### 公開メンバー関数

      void
      apply(void (*fn)(const K&, T&, void*),void* d);
      void
      apply(void (*fn)(const K&,const T&,void*),void* d) const;

    `fn` が指すユーザー定義関数を、コレクション内の各関連付けに適用します。この関数は、次のプロトタイプの 1 つを持っていなければなりません。

         void yourfun(const K& key, T& a, void* d);
         void yourfun(const K& key, const T& a,void* d);

    クライアントデータは、パラメータ `d` を通して渡すことができます。

      void
      applyToKeyAndValue(void (*fn)(const K&, T&,void*),void* d);
      void
      applyToKeyAndValue
      (void (*fn)(const K&, const T, void*),void* d) const;

    これは、上記 `apply` メンバーの陳腐化した (古くなった) バージョンです。機能は `apply` とまったく同じです。

      iterator
      begin();
      const_iterator
      begin() const;

    自分自身内の最初のペアの位置にある反復子を返します。

      size_type
      capacity() const;

    基礎となるハッシュ表現で使用可能なバケット (スロット) 数を返します。下記の `resize` を参照してください。

      void
      clear();

    自分自身から項目をすべて削除することによって、コレクションを消去します。各キーとそれに関連付けられた項目のデストラクタを呼び出します。

      bool
      contains(const K& key) const;

    自分自身内に `key` と等しいキー `j` が存在する場合は、`TRUE` を返します。それ以外の場合は、`FALSE` を返します。

      bool
      contains(bool (*fn)(const_reference,void*), void* d) const;

    自分自身内に式 `((*fn)(a,d))` が `TRUE` になるような関連付け `a` が存在する場合は、`TRUE` を返します。それ以外の場合は、`FALSE` を返します。`fn` が指すユーザー定義テスター関数は、次のプロトタイプを持っていなければなりません。

         bool yourTester(const_reference a, void* d);

    クライアントデータは、パラメータ `d` を通して渡すことができます。

      iterator
      end();
      const_iterator
      end() const;

    自分自身内の最後の関連付けの「直後」にある反復子を返します。

      size_type
      entries() const;

    自分自身内の関連付けの数を返します。

      float
      fillRatio() const;

    `entries()/capacity()` の比率を返します。

      bool
      find(const K& key, K& r) const;

    自分自身内に `key` と等しいキー `j` が存在する場合は、`j` を `r` に代入し、`TRUE` を返します。それ以外の場合は、`FALSE` を返し、`r` の値は変更しません。

      bool
      find(bool (*fn)(const_reference,void*),void* d,
                      pair<K,T>& r) const;

    自分自身内に式 `((*fn)(a,d))` が `TRUE` になるような関連付け `a` が存在する場合は、`a` を `r` に代入し、`TRUE` を返します。それ以外の場合は、`FALSE` を返し、`k` の値は変更しません。`fn` が指すユーザー定義テスター関数は、次のプロトタイプを持っていなければなりません。

         bool yourTester(const K& a, void* d);

    クライアントデータは、パラメータ `d` を通して渡すことができます。

      bool
      findValue(const K& key, T& r) const;

    自分自身内に `key` と等しいキー `j` が存在する場合は、`j` に関連付けられている項目を `r` に代入し、`TRUE` を返します。それ以外の場合は、`FALSE` を返し、`r` の値は変更しません。

      bool
      findKeyValue(const K& key, K& kr, T& tr) const;

    自分自身内に `key` と等しいキー `j` が存在する場合は、`j` を `kr` に代入し、`j` に関連付けられている項目を `tr` に代入し、`TRUE` を返します。それ以外の場合は、`FALSE` を返し、`kr` と `tr` の値は変更しません。

      bool
      insert(const K& key, const T& a);

    項目 `a` が関連付けられている `key` をコレクションに追加します。挿入が正常に行われた場合は `TRUE` を返し、それ以外の場合は `FALSE` を返します。コレクションが同値キーとの関連付けを持たない限り、この関数は `TRUE` を返します。

      bool
      insertKeyAndValue(const K& key,const T& a);

    これは、上記 `insert` メンバーの陳腐化した (古くなった) バージョンです。機能は `insert` とまったく同じです。

      bool
      isEmpty() const;

    コレクション内に項目が存在しない場合は `TRUE` を返し、それ以外の場合は `FALSE` を返します。

      size_type
      occurrencesOf(const K& key) const;

    `key` と等しい自分自身内のキー `j` の数を返します。

      size_type
      occurrencesOf(bool (*fn)(const_reference,void*),void* d) const;

    式 `((*fn)(a,d))` が `TRUE` になるような自分自身内の関連付け `a` の数を返します。`fn` が指すユーザー定義テスター関数は、次のプロトタイプを持っていなければなりません。

         bool yourTester(const_reference a, void* d);

    クライアントデータは、パラメータ `d` を通して渡すことができます。

      bool
      remove(const K& key);

    式 `(j == key)` が `TRUE` になるような自分自身内のキー `j` との最初の関連付けを削除し、`TRUE` を返します。そのような関連付けが存在しない場合は、`FALSE` を返します。

      bool
      remove(bool (*fn)(const_reference,void*), void* d);

    式 `((*fn)(a,d))` が `TRUE` になるような自分自身内の最初の関連付け `a` を削除し、`TRUE` を返します。そのような要素が存在しない場合は、`FALSE` を返します。`fn` が指すユーザー定義テスター関数は、次のプロトタイプを持っていなければなりません。

         bool yourTester(const_reference a, void* d);

    クライアントデータは、パラメータ `d` を通して渡すことができます。

      size_type
      removeAll(const K& key);

    `key` と等しい自分自身内の要素 `j` をすべて削除します。削除した項目数を返します。

      size_type
      removeAll(bool (*fn)(const_reference,void*), void* d);

    式 `((*fn)(a,d))` が `TRUE` になるような自分自身内のすべての関連付け `a` を削除します。削除した項目数を返します。`fn` が指すユーザー定義テスター関数は、次のプロトタイプを持っていなければなりません。

         bool yourTester(const_reference a, void* d);

    クライアントデータは、パラメータ `d` を通して渡すことができます。

      void
      resize(size_type sz);

    `sz` の容量を用いて新しいハッシュマップを作成することによって、自分自身の容量を変更します。次に、`resize` は、自分自身のすべての要素を新しいコンテナにコピーし、最後に、その新しいコンテナの内部表現を自分自身の内部表現と交換します。

      rw_hashmap<K,T,H,EQ>&
      std();
      const rw_hashmap<K,T,H,EQ>&
      std() const;

    自分自身に対する実装として使用される、基礎となる C++ 標準コレクションへの参照を返します。この参照は自由に使用でき、C++ 標準インタフェースへのアクセスを提供したり、C++ 標準準拠コレクションを利用する他のソフトウェアソフトウェアコンポーネントとの相互運用性を提供します。

### 関連の大域演算子

      RWvostream&
      operator<<(RWvostream& strm,
             const RWTValHashMap<K,T,H,EQ>& coll);
      RWFile&
      operator<<(RWFile& strm, const RWTValHashMap<K,T,H,EQ>& coll);

    出力ストリーム `strm` にコレクション `coll` を保存するか、すでに保存されている場合は、そのコレクションに対する参照を保存します。

      RWvistream&
      operator>>(RWvistream& strm, RWTValHashMap<K,T,H,EQ>& coll);
      RWFile&
      operator>>(RWFile& strm, RWTValHashMap<K,T,H,EQ>& coll);

    コレクション `coll` の内容を入力ストリームから復元します。

      RWvistream&
      operator>>(RWvistream& strm, RWTValHashMap<K,T,H,EQ>*& p);
      RWFile&
      operator>>(RWFile& strm, RWTValHashMap<K,T,H,EQ>*& p);

    入力ストリーム `strm` 上の次のオブジェクトを調べて、ヒープから新しいコレクションを作成してそれを指すように `p` を設定するか、または前に読み込んだインスタンスを指すように `p` を設定します。コレクションをヒープから作成した場合、ユーザーはそれを削除する責任があります。