#ifndef TINYSTL_MAP
#define TINYSTL_MAP

#include <functional>
#include <utility>

namespace std {
  
  template<class Key, class T,
	   class Compare = less<Key> >
  class map {
  public:
    
    typedef pair<Key, T>* iterator;
    typedef pair<Key, T>*  const_iterator;
    typedef int size_type;
    
    map () {};
    ~map () {};
    
    T& front () {};
    T& back () {};
    
    T& operator[] (const Key& key) {};
    
    iterator begin () {};
    iterator end () {};
    const_iterator begin () const {};
    const_iterator end () const {};
    
    size_type size () const {};
    bool empty () const {};
    size_type max_size () const {};
    
    void erase (const Key& key) {}
  };
  
  template<class Key, class T,
	   class Compare = less<Key> >
  class multimap {
  public:
    typedef pair<Key, T>* iterator;
    typedef pair<Key, T>*  const_iterator;
    typedef int size_type;
    
    multimap () {};
    ~multimap () {};
    
    T& front () {};
    T& back () {};

    T& operator[] (const Key& key) {};
    
    iterator insert (const pair<Key,T>& p) {};
    iterator insert (iterator pos, const T& value) {};
    
    iterator begin () {};
    iterator end () {};
    const_iterator begin () const {};
    const_iterator end () const {};
    
    size_type size () const {};
    bool empty () const {};
    size_type max_size () const {};
    
    size_type count (const Key&) {};
    iterator find (const Key&) {};
    iterator lower_bound (const Key&) {};
    iterator upper_bound (const Key&) {};
    iterator equal_bound (const Key&) {};
  };
  
}

#endif
