バナーをクリックすれば目次に戻ります
Copyright 1999 Rogue Wave Software
Copyright 1999 Sun Microsystems, Inc.
RWTPtrMultiSet<T,C>
#include <rw/tpmset.h> RWTPtrMultiSet<T,C> s;
注 - RWTPtrMultiSet には標準 C++ ライブラリが必要です。
bool operator()(const T& x, const T& y)これは、コレクション内において、x が y より前になる場合、TRUE を返します。C++ 標準ヘッダーファイル <functional> からの構造体 less<T> がその例です。コレクションの項目は比較前に間接参照されることに注意してください。
RWTPtrMultiSet<T,C> には、互いに等しい複数の項目を含めることができます (RWTPtrSet<T,C> は、コレクション内の既存の項目と等しい項目は受け付けません)。
// // tpmset.cpp // #include <rw/tpmset.h> #include <rw/cstring.h> #include <iostream.h> #include <function.h> main(){ RWTPtrMultiSet<RWCString, less<RWCString> > set; set.insert(new RWCString("one")); set.insert(new RWCString("two")); set.insert(new RWCString("three")); set.insert(new RWCString("one")); // OK: 重複可 cout << set.entries() << endl; // 「4」を出力する set.clearAndDestroy(); cout << set.entries() << endl; // 「0」を出力する return 0; } |
クラス multiset<T*,rw_deref_compare<C,T>,allocator> は、RWTPtrMultiSet<T,C> の基礎となる実装として使用される C++ 標準コレクションです。
typedef rw_deref_compare<C,T> container_comp; typedef multiset<T*, container_comp,allocator> container_type; typedef container_type::size_type size_type; typedef container_type::difference_type difference_type; typedef container_type::iterator iterator; typedef container_type::const_iterator const_iterator; typedef T* value_type; typedef T* const& reference; typedef T* const& const_reference;
RWTPtrMultiSet<T,C>(const container_comp& = container_comp());
RWTPtrMultiSet<T,C>(const RWTPtrMultiSet<T,C>& rws);
RWTPtrMultiSet<T,C>(const container_type>& ms);
RWTPtrMultiSet<T,C>(T* const* first,T* const* last,const container_comp& = container_comp());
RWTPtrMultiSet<T,C>& operator=(const container_type>& s); RWTPtrMultiSet<T,C>& operator=(const RWTPtrMultiSet<T,C>& s);
bool operator<(const RWTPtrMultiSet<T,C>& s) const;
bool operator==(const RWTPtrMultiSet<T,C>& s) const;
void apply(void (*fn)(const T*,void*), void* d) const;
void yourfun(const T* a, void* d);
iterator begin(); const_iterator begin() const;
void clear();
void clearAndDestroy();
bool contains(const T* a) const;
bool contains(bool (*fn)(const T*,void*), void* d) const;
bool yourTester(const T* a, void* d);
void difference(const RWTPtrMultiSet<T,C>& s);
iterator end(); const_iterator end() const;
size_type entries();
const T* find(const T* a) const;
const T* find(bool (*fn)(T*,void*), void* d); const T* find(bool (*fn)(const T*,void*), void* d) const;
bool yourTester(const T* a, void* d);
bool insert(T* a);
void intersection(const RWTPtrMultiSet<T,C>& s);
bool isEmpty() const;
bool isEquivalent(const RWTPtrMultiSet<T,C>& s) const;
bool isProperSubsetOf(const RWTPtrMultiSet<T,C>& s) const;
bool isSubsetOf(const RWTPtrMultiSet<T,C>& s) const;
size_type occurrencesOf(const T* a) const;
size_type occurrencesOf(bool (*fn)(const T*,void*), void* d) const;
bool yourTester(const T* a, void* d);
T* remove(const T* a);
T* remove(bool (*fn)(const T*,void*), void* d);
bool yourTester(const T* a, void* d);
size_type removeAll(const T* a);
size_type removeAll(bool (*fn)(const T*,void*), void* d);
bool yourTester(const T* a, void* d);
multiset<T*, container_comp,allocator>& std(); const multiset<T*, container_comp,allocator>& std() const;
void symmetricDifference(const RWTPtrMultiSet<T,C>& s);
void Union(const RWTPtrMultiSet<T,C>& s);
RWvostream& operator<<(RWvostream& strm, const RWTPtrMultiSet<T,C>& coll); RWFile& operator<<(RWFile& strm, const RWTPtrMultiSet<T,C>& coll);
RWvistream& operator>>(RWvistream& strm, RWTPtrMultiSet<T,C>& coll); RWFile& operator>>(RWFile& strm, RWTPtrMultiSet<T,C>& coll);
RWvistream& operator>>(RWvistream& strm, RWTPtrMultiSet<T,C>*& p); RWFile& operator>>(RWFile& strm, RWTPtrMultiSet<T,C>*& p);