multiset


template<class t, class less>
struct multiset : public semaphore
{
 
  typedef set_iterator<t> iterator;

  multiset();

  multiset(const multiset<t>& copy);

  multiset(std::initializer_list l);

  template<class I>
  multiset(I first,I last);

  ~multiset();

  multiset<t>& operator=(const multiset<t>& copy);

  multiset<t>& operator<<(const t& element);

  iterator after(const t& element) const;

  iterator after_equals(const t& element) const;

  iterator before(const t& element) const;

  iterator before_equals(const t& element) const;

  t& back();

  const t& back() const;

  iterator begin() const;

  long long depth() const; 

  iterator end() const;

  void erase();

  long long erase(const t& key);

  void erase(iterator item);

  bool contains(const t& element) const;

  t& front();

  const t& front() const;

  list<t> find(const t& key) const;

  iterator insert(const t& element);

  iterator last() const;

  long long length() const;
};