#include "iterator.h"
#include "utility.h"
#include "functional.h"
#include "memory.h"
#include "empty.h"

namespace std {

template <typename _Key, typename _Tp, typename _Compare = std::less<_Key>,
          typename _Alloc = std::allocator<_Key>>
class multimap {
public:
  typedef std::pair<const _Key, _Tp> value_type;
  typedef std::__iterator<value_type> iterator;
  typedef std::__iterator<value_type> const_iterator;

  iterator begin();
  iterator end();
  const_iterator cbegin();
  const_iterator cend();

  multimap();
};

template <typename _Key, typename _Tp, typename _Compare = std::less<_Key>,
          typename _Alloc = std::allocator<_Key>>
class map {
public:
  typedef std::pair<const _Key, _Tp> value_type;
  typedef std::__iterator<value_type> iterator;
  typedef std::__iterator<value_type> const_iterator;

  iterator begin();
  iterator end();
  const_iterator cbegin();
  const_iterator cend();

  map();
};
} // namespace std