バナーをクリックすれば目次に戻ります
Copyright 1999 Rogue Wave Software
Copyright 1999 Sun Microsystems, Inc.
RWTValMultiMap<K,T,C>
#include <rw/tvmmap.h> RWTValMultiMap<K,T,C> m;
注 - RWTValMultiMap には標準 C++ ライブラリが必要です。
bool operator()(const K& x, const K& y) constこれは、コレクション内において、x とそのパートナーが y とそのパートナーより前になる場合、TRUE を返します。C++ 標準ヘッダーファイル <functional> からの構造体 less<T> がその例です。
RWTValMultiMap<K,T,C> には、互いに等しい複数のキーを含めることができます (RWTValMap<K,T,C> は、コレクション内の既存のキーと等しいキーは受け付けません)。等しいかどうかは、== 演算子ではなく、比較オブジェクトにもとづいて判定されます。比較オブジェクト comp を使用するとき、キー a と b は次の場合に等しくなります。
!comp(a,b) && !comp(b,a)
// // tvmmbday.cpp // #include <rw/tvmmap.h> #include <rw/cstring.h> #include <rw/rwdate.h> #include <iostream.h> #include <function.h> main(){ typedef RWTValMultiMap<RWCString, RWDate, less<RWCString> > RWMMap; RWMMap birthdays; birthdays.insert("John", RWDate(12, "April",1975)); birthdays.insert("Ivan", RWDate(2, "Nov", 1980)); birthdays.insert("Mary", RWDate(22, "Oct", 1987)); birthdays.insert("Ivan", RWDate(19, "June", 1971)); birthdays.insert("Sally",RWDate(15, "March",1976)); birthdays.insert("Ivan", RWDate(6, "July", 1950)); // 「Ivan」がいくつあるか? RWMMap::size_type n = birthdays.occurrencesOf("Ivan"); RWMMap::size_type idx = 0; cout << "There are " << n << " Ivans:" << endl; RWMMap::iterator iter = birthdays.std().lower_bound("Ivan"); while (++idx <= n) cout << idx << ". " << (*iter++).second << endl; return 0; } |
There are 3 Ivans: 1. 11/02/80 2. 06/19/71 3. 07/06/50 |
クラス multimap<K,T,C,allocator> は、このコレクションの基礎となる実装として使用される C++ 標準コレクションです。
typedef multimap<K,T,C,allocator> 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;
RWTValMultiMap<K,T,C>(const C& comp = C());
RWTValMultiMap<K,T,C>(const container_type& m);
RWTValMultiMap<K,T,C>(const RWTValMultiMap<K,T,C>& rwm);
RWTValMultiMap<K,T,C> (const value_type* first, const value_type* last, const C& comp = C());
RWTValMultiMap<K,T,C>& operator=(const RWTValMultiMap<K,T,C>& m); RWTValMultiMap<K,T,C>& operator=(const container_type& m) const;
bool operator<(const RWTValMultiMap<K,T,C>& m); bool operator<(const container_type& m) const;
bool operator==(const RWTValMultiMap<K,T,C>& m) const; bool operator==(const container_type& 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& key, T& a, void* d); void yourfun(const K& key, 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;
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;
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(bool (*fn)(const_reference,void*), void* d);
bool yourTester(const_reference a, void* d);
multimap<K,T,C,allocator>& std(); const multimap<K,T,C,allocator>& std() const;
RWvostream& operator<<(RWvostream& strm, const RWTValMultiMap<K,T,C>& coll); RWFile& operator<<(RWFile& strm, const RWTValMultiMap<K,T,C>& coll);
RWvistream& operator>>(RWvistream& strm, RWTValMultiMap<K,T,C>& coll); RWFile& operator>>(RWFile& strm, RWTValMultiMap<K,T,C>& coll);
RWvistream& operator>>(RWvistream& strm, RWTValMultiMap<K,T,C>*& p); RWFile& operator>>(RWFile& strm, RWTValMultiMap<K,T,C>*& p);