バナーをクリックすれば目次に戻ります
Copyright 1999 Rogue Wave Software
Copyright 1999 Sun Microsystems, Inc.
RWTValHashMultiMap<K,T,H,EQ>
#include <rw/tvhmmap.h> RWTValHashMultiMap<K,T,H,EQ> m;
注 - RWTValHashMultiMap には標準 C++ ライブラリが必要です。
unsigned long operator()(const K& x) constコレクション中の同値キーは、型 EQ の同等オブジェクトにもとづいてグループ化されます。EQ は、次の公開メンバーを介して、このグループ化を保証しなければなりません。
bool operator()(const K& x, const K& y) constこれは、x と y が等しい場合に TRUE を返します。
RWTValHashMultiMap<K,T,H,EQ> には、互いに等しい複数のキーを含めることができます (RWTValHashMap<K,T,H,EQ> は、コレクション内の既存のキーと等しいキーは受け付けません)。等しいかどうかは、== 演算子ではなく、比較オブジェクトにもとづいて判定されます。
//
// tvhmmrat.cpp
//
#include<rw/tvhmmap.h>
#include<iostream.h>
#include<rw/cstring.h>
struct silly_hash{
unsigned long operator()(RWCString x) const
{ return x.length() * (long)x[0]; }
};
int main(){
RWCString trd = "Third";
RWTValHashMultiMap<RWCString,int,silly_hash,equal_to<RWCString> >
contest;
contest.insert("First", 7);
contest.insert(trd,3);
contest.insert(trd,6); //自分自身には trd に等しい 2 つの別々の値がある。
contest.insert("Second",2);
contest.resize(8);
cout << "The table is " << contest.fillRatio() * 100.0
<< "% full<< endl;
return 0;
}
|
The table is 50% full |
クラス rw_hashmultimap<K,T,H,EQ> は、このコレクションの基礎となる実装として使用される C++ 標準コレクションです。
typedef rw_hashmultimap<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 pair <const K,T>& reference; typedef const pair<const K,T>& const_reference;
RWTValHashMultiMap<K,T,H,EQ>();
RWTValHashMultiMap<K,T,H,EQ> (const rw_hashmultimap<K,T,H,EQ>& m);
RWTValHashMultiMap<K,T,H,EQ> (const RWTValHashMultiMap<K,T,H,EQ>& rwm);
RWTValHashMultiMap<K,T,H,EQ> (const value_type* first, const value_type* last);
RWTValHashMultiMap<K,T,H,EQ>& operator=(const RWTValHashMultiMap<K,T,H,EQ>& m); RWTValHashMultiMap<K,T,H,EQ>& operator=(const rw_hashmultimap<K,T,H,EQ>& m);
bool operator==(const RWTValHashMultiMap<K,T,H,EQ>& m) const; bool operator==(const rw_hashmultimap<K,T,H,EQ>& m) const;
void apply(void (*fn)(const K&, T&, void*),void* d); void apply(void (*fn)(const K&,const T&, void*), void* d) const;
void yourfun(const K&, T& a, void* d); void yourfun(const K&, const T& a,void* d);
void applyToKeyAndValue(void (*fn)(const K&, T&, void*),void* d); void applyToKeyAndValue (void (*fn)(const K&,const T&,void*), void* d) const;
iterator begin(); const_iterator begin() const;
size_type capacity() const;
void clear();
bool contains(const K& key) const;
bool contains (bool (*fn)(const_reference,void*), void* d) const;
bool yourTester(const_reference a, void* d);
iterator end(); const_iterator end() const;
size_type entries() const;
float fillRatio() const;
bool find(const K& key, Key& r) const;
bool
find (bool (*fn)(const_reference,void*),
void* d,pair<K,T>& r) const;
bool yourTester(const_reference a, void* d);
bool findValue(const K& key, T& r) const;
bool findKeyValue(const K& key, K& kr, T& tr) const;
bool insert(const K& key, const T& a);
bool insertKeyAndValue(const K& key, const T& a);
bool isEmpty() const;
size_type occurrencesOf(const K& key) const;
size_type occurrencesOf (bool (*fn)(const_reference,void*),void* d) const;
bool yourTester(const_reference a, void* d);
bool remove(const K& key);
bool remove(bool (*fn)(const_reference,void*), void* d);
bool yourTester(const_reference a, void* d);
size_type removeAll(const K& key);
size_type removeAll(const K& key);
bool yourTester(const_reference a, void* d);
void resize(size_type sz);
rw_hashmultimap<K,T,H,EQ>& std(); const rw_hashmultimap<K,T,H,EQ>& std() const;
RWvostream&
operator<<(RWvostream& strm,
const RWTValHashMultiMap<K,T,H,EQ>& coll);
RWFile&
operator<<(RWFile& strm,
const RWTValHashMultiMap<K,T,H,EQ>& coll);
RWvistream&
operator>>(RWvistream& strm,
RWTValHashMultiMap<K,T,H,EQ>& coll);
RWFile&
operator>>(RWFile& strm, RWTValHashMultiMap<K,T,H,EQ>& coll);
RWvistream& operator>>(RWvistream& strm, RWTValHashMultiMap<K,T,H,EQ>*& p); RWFile& operator>>(RWFile& strm, RWTValHashMultiMap<K,T,H,EQ>*& p);
