バナーをクリックすれば目次に戻ります
Copyright 1999 Rogue Wave Software
Copyright 1999 Sun Microsystems, Inc.
RWTValHashSet<T,H,EQ>
#include <rw/tvhset.h> RWTValHashSet<T,H,EQ> s;
注 - 標準 C++ ライブラリがある場合は、ここで述べるインタフェースを使用します。標準 C++ ライブラリがない場合は、付録 A に記載する RWTValHashSet に制限されたインタフェースを使用してください。
unsigned long operator()(const T& x) constコレクション中のオブジェクトは、型 EQ の同等オブジェクトにもとづいてグループ化されます。EQ は、次の公開メンバーを介して、このグループ化を保証しなければなりません。
bool operator()(const T& x, const T& y) constこれは、x と y が等しい場合に TRUE を返し、それ以外の場合は FALSE を返します。
RWTValHashSet<T,H,EQ> は、コレクション内の既存の項目と等しい項目は受け付けません (RWTValHashMultiSet<T,H,EQ> には、互いに等しい複数の項目を含めることができます)。等しいかどうかは、== 演算子ではなく、同等オブジェクトにもとづいて判定されます。
// // tvhsstr.cpp // #include <rw/tvhset.h> #include <rw/cstring.h> #include <iostream.h> struct silly_hash{ unsigned long operator()(RWCString x) const { return x.length() * (long)x(0); } }; main(){ RWTValHashSet<RWCString,silly_hash,equal_to<RWCString> > set1; RWTValHashSet<RWCString,silly_hash,equal_to<RWCString> > set2; set1.insert("one"); set1.insert("two"); set1.insert("three"); //拒絶された。重複不可 set1.insert("one"); cout << set1.entries() << endl; // 「3」を出力する set2.insert("one"); set2.insert("five"); //拒絶された。重複不可 set2.insert("one"); cout << ((set1.isEquivalent(set2)) ? "TRUE" : "FALSE") << endl; // 「FALSE」を出力する set2.intersection(set1); set1.clear(); cout << set1.entries() << endl; // 「0」を出力する cout << set2.entries() << endl; // 「1」を出力する return 0; } |
クラス rw_hashset<T,H,EQ> は、RWTValHashSet<T,H,EQ> の基礎となる実装として使用される C++ 標準準拠コレクションです。
typedef rw_hashset<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 T value_type; typedef T& reference; typedef const T& const_reference;
RWTValHashSet<T,H,EQ> (size_type sz = 1024,const H& h = H(),const EQ& eq= EQ());
RWTValHashSet<T,H,EQ>(const rw_hashset<T,H,EQ>& s);
RWTValHashSet<T,H,EQ>(const RWTValHashSet<T,H,EQ>& rws);
RWTPtrHashSet<T,H,EQ> (const H& h,size_type sz = RWDEFAULT_CAPACITY);
RWTValHashSet<T,H,EQ>(const T* first,const T* last, size_type sz = 1024,const H& h = H(),const EQ& eq = EQ());
RWTValHashSet<T,H,EQ>& operator=(const RWTValHashSet<T,H,EQ>& s); RWTValHashSet<T,H,EQ>& operator=(const rw_hashset<T,H,EQ>& s);
bool operator==(const RWTValHashSet<T,H,EQ>& s) const; bool operator==(const rw_hashset<T,H,EQ>& s) const;
void apply(void (*fn)(const_reference,void*), void* d) const;
void yourfun(const T& a, void* d);
iterator begin(); const_iterator begin() const;
size_type capacity() const;
void clear();
bool contains(const_reference a) const;
bool contains(bool (*fn)(const_reference,void*), void* d) const;
bool yourTester(const_reference a, void* d);
void difference(const RWTValHashSet<T,H,EQ>& s); void difference(const rw_hashset<T,H,EQ>& s);
iterator end(); const_iterator end() const;
size_type entries() const;
float fillRatio() const;
bool find(const_reference a, value_type& k) const;
bool find(bool (*fn)(const_reference,void*), void* d, value_type& k) const;
bool yourTester(const_reference a, void* d);
bool insert(const_reference a);
void intersection(const RWTValHashSet<T,H,EQ>& rhs); void intersection(const rw_hashset<T,H,EQ>& rhs);
bool isEmpty() const;
bool isEquivalent(const RWTValHashSet<T,H,EQ>& s) const;
bool isProperSubsetOf(const RWTValHashSet<T,H,EQ>& s) const;
bool isSubsetOf(const RWTValHashSet<T,H,EQ>& s) const;
size_type occurrencesOf(const_reference a) const;
size_type occurrencesOf (bool (*fn)(const_reference,void*),void* d) const;
bool yourTester(const_reference a, void* d);
bool remove(const_reference a);
bool remove(bool (*fn)(const_reference,void*), void* d);
bool yourTester(const_reference a, void* d);
size_type removeAll(const_reference a);
size_type removeAll(bool (*fn)(const_reference,void*), void* d);
bool yourTester(const_reference a, void* d);
void resize(size_type sz);
rw_hashset<T,H,EQ>& std(); const rw_hashset<T,H,EQ>& std() const;
void symmetricDifference(const RWTValHashSet<T,H,EQ>& s); void symmetricDifference(const rw_hashset<T,H,EQ>& s);
void Union(const RWTValHashSet<T,H,EQ>& s); void Union(const rw_hashsett<T,H,EQ>& s);
RWvostream& operator<<(RWvostream& strm, const RWTValHashSet<T,H,EQ>& coll); RWFile& operator<<(RWFile& strm, const RWTValHashSet<T,H,EQ>& coll);
RWvistream& operator>>(RWvistream& strm, RWTValHashSet<T,H,EQ>& coll); RWFile& operator>>(RWFile& strm, RWTValHashSet<T,H,EQ>& coll);
RWvistream& operator>>(RWvistream& strm, RWTValHashSet<T,H,EQ>*& p); RWFile& operator>>(RWFile& strm, RWTValHashSet<T,H,EQ>*& p);