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

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

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

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

### 形式

      #include<rw/tphmmap.h>
      RWTPtrHashMultiMap<K,T,H,EQ> m;
      RWTPtrHashMultiMap<K,T,H,EQ> itr(m);

### 標準 C++ ライブラリ依存

  > 注 - RWTPtrHashMultiMapIterator には標準 C++ ライブラリが必要です。

### 説明

  Tools.h++ 7 の RWTPtrHashMultiMapIterator には、Tools.h++ 6.x に付属するコンテナ反復子との下位互換性を持つ新しい標準ライブラリにもとづくコレクションへの反復子インタフェースが用意されています。

  RWTPtrHashMultiMap に対する繰り返しは擬似ランダムであり、基礎となるハッシュテーブルの容量と使用するハッシュ関数によって決まります。連続要素間で唯一有用な関係は、同等オブジェクト `EQ` によって等価と定義された要素が隣接したままであることです。

  この反復子が参照する現在の項目は、作成後も、`reset()` の呼び出し後も、定義されていません。反復子は、前置インクリメントか `operator()` を用いて進められた後に有効になります。

  `operator++` と `operator()` の場合は、最後の要素を越えて反復すると、ブール型の `FALSE` に相当する値を返します。一度この状態に達してからも増分し続けると、`reset()` が呼び出されるまで、`FALSE` に相当する値を返します。

### 持続性

  なし

### 例

      #include<rw/tphmmap.h>
      #include<iostream.h>
      #include<rw/cstring.h>

      struct silly_h{
         unsigned long operator()(RWCString x) const
           { return x.length() * (long)x(0); }
      };

      int main(){
         RWTPtrHashMultiMap
           <RWCString,int,silly_h,equal_to<RWCString> > age;

         RWTPtrHashMultiMapIterator
           <RWCString,int,silly_h,equal_to<RWCString> > itr(age);
         age.insert(new RWCString("John"),new int(30));
         age.insert(new RWCString("Steve"),new int(17));
         age.insert(new RWCString("Mark"),new int(24));
         age.insert(new RWCString("Steve"),new int(24));

         for(;++itr;)
           cout << *itr.key() << "\'s age is " << *itr.value() << endl;

         return 0;
      }

  #### プログラム出力 (必ずしもこの順にはなりません)

      John's age is 30
      Mark's age is 24
      Steve's age is 24
      Steve's age is 17

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

      RWTPtrHashMultiMapIterator<K,T,H,EQ>
      (RWTPtrHashMultiMap<K,T,H,EQ>&h);

    ハッシュマルチマップ `h` の反復子を作成します。反復子は、未定義状態から始まり、最初の要素がアクセス可能になる前まで進める必要があります。

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

      K*
      operator()();

    自分自身を次の要素に進め、結果反復子を間接参照し、そのキーを返します。反復子がコンテナ内の最後の項目を越えた場合は、ブール型の `FALSE` に相当する NULL ポインタの要素を返します。

      RWBoolean
      operator++();

    自分自身を次の要素に進めます。反復子が初期状態に戻された、あるいは作成されたばかりの場合、自分自身は最初の要素を参照します。反復の前に自分自身がマルチマップ内の最後の関連付けを参照した場合、自分自身は未定義の値を参照し、`FALSE` に相当する値を返します。それ以外の場合は、`TRUE` に相当する値を返します。注 : 後置インクリメント演算子は提供されていません。

### 公開メンバー関数

      RWTPtrHashMultiMap<K,T,H,EQ>*
      container() const;

    反復されるコレクションへのポインタを返します。

      K*
      key() const;

    現在自分自身が参照している関連付けのキー部分を返します。自分自身がマルチマップ内の値を参照していない場合の影響は定義されていません。

      void
      reset();
      void
      reset(RWTPtrHashMultiMap<K,T,H,EQ>& h);

    前に進められた反復子がコレクションの最初の要素を参照できるように、反復子を初期状態に戻します。引数なしで `reset()` を使用すると、現在のコンテナ上の反復子が初期状態に戻されます。`reset()` に RWTPtrHashMultiMap を使用すると、そのコンテナ上の反復子が初期状態に戻されます。

      T*
      value();

    自分自身が参照する関連付けの値部分を返します。自分自身が無効の場合の動作は定義されていません。