multitree


template <class K, class T>
class multitree : public multiset<T>
{
 public:

  typedef int (*keyValueCompare)(const K&,const T&);

  multitree(keyValueCompare K=compare, keyCompare C=compare);

  multitree(const multitree<K,T>& Copy);

  template<class I>
  multitree(I first,
            I last,
            keyValueCompare K=compare,
            keyCompare C=compare);

  multitree<K,T>& operator=(const multitree<K,T>& Copy);

  void* operator new(size_t s);

  void operator delete(void* p);

  operator keyValueCompare() const;

  iterator after(const K& Key) const;

  iterator afterEquals(const K& Key) const;

  iterator before(const K& Key) const;

  iterator beforeEquals(const K& Key) const;

  Unsigned erase(const K& Key);

  bool exists(const K& Key) const;

  iterator find(const K& Key, Unsigned Index) const;

  list<T> find(const K& Key) const;

  Void range(const K& Key,
             iterator& First,
             iterator& Last) const;
};