バナーをクリックすれば目次に戻ります
Copyright 1999 Rogue Wave Software
Copyright 1999 Sun Microsystems, Inc.
RWTValHashMultiMapIterator<K,T,H,EQ>
#include<rw/tvhmmap.h> RWTValHashMultiMap<K,T,H,EQ> m; RWTValHashMultiMapIterator<K,T,H,EQ> itr(m);
注 - RWTValHashMultiMapIterator には標準 C++ ライブラリが必要です。
RWTValHashMultiMap に対する繰り返しは擬似ランダムであり、基礎となるハッシュテーブルの容量と使用するハッシュ関数によって決まります。連続要素間で唯一有用な関係は、同等オブジェクト EQ によって等価と定義された要素が隣接したままであることです。
この反復子が参照する現在の項目は、作成後も、reset() の呼び出し後も定義されていません。反復子は、前置インクリメントか operator() を用いて進められた後に有効になります。
operator++ と operator() の場合は、最後の要素を越えて反復すると、ブール型の FALSE に相当する値を返します。一度この状態に達してからも増分し続けると、reset() が呼び出されるまで、FALSE に相当する値を返します。
#include<rw/tvhmmap.h>
#include<rw/cstring.h>
#include<iostream.h>
struct silly_h{
unsigned long operator()(const RWCString& x) const
{ return x.length() * (long)x(0); }
};
int main(){
RWTValHashMultiMap
<RWCString,int,silly_h,equal_to<RWCString> > age;
RWTValHashMultiMapIterator
<RWCString, int, silly_h, equal_to<RWCString > > itr(age);
age.insert(RWCString("John"), 30);
age.insert(RWCString("Steve"),17);
age.insert(RWCString("Mark"),24);
age.insert(RWCString("Steve"),24);
for(;itr();)
cout << itr.key() << "\'s age is " << itr.value() << endl;
return 0;
}
|
John's age is 30 Steve's age is 24 Steve's age is 17 Mark's age is 24 |
RWTValHashMultiMapIterator<K,T,H,EQ> (RWTValHashMultiMap<K,T,H,EQ>&h);
RWBoolean operator()();
RWBoolean operator++();
注 - 後置インクリメント演算子は提供されていません。
RWTValHashMultiMap<K,T,H,EQ>* container() const;
K key() const;
void reset(); void reset(RWTValHashMultiMap<K,T,H,EQ>& h);
T value();
