39 #ifndef BLOCXX_MAP_HPP_INCLUDE_GUARD_
40 #define BLOCXX_MAP_HPP_INCLUDE_GUARD_
41 #include "blocxx/BLOCXX_config.h"
47 namespace BLOCXX_NAMESPACE
52 template<
class Key,
class T,
class Compare >
class Map;
54 template<
class Key,
class T,
class Compare>
58 template<
class Key,
class T,
class Compare>
59 inline bool operator<(const Map<Key, T, Compare>& x,
63 template<
class Key,
class T,
class Compare = std::less<Key> >
class Map
65 typedef std::map<Key, T, Compare >
M;
86 explicit Map(
const Compare& comp)
88 template <
class InputIterator>
89 Map(InputIterator first, InputIterator last) :
93 template <
class InputIterator>
94 Map(InputIterator first, InputIterator last,
const Compare& comp) :
95 m_impl(new
M(first, last, comp))
104 return m_impl->key_comp();
108 return m_impl->value_comp();
152 return m_impl->max_size();
156 return m_impl->operator[](k);
168 return m_impl->insert(position, x);
170 template <
class InputIterator>
171 void insert(InputIterator first, InputIterator last)
173 m_impl->insert(first, last);
185 m_impl->erase(first, last);
205 return m_impl->lower_bound(x);
209 return m_impl->lower_bound(x);
213 return m_impl->upper_bound(x);
217 return m_impl->upper_bound(x);
221 return m_impl->equal_range(x);
223 std::pair<const_iterator, const_iterator>
226 return m_impl->equal_range(x);
233 template <
class Key,
class T,
class Compare>
236 return new std::map<Key, T, Compare>(*obj);
238 template<
class Key,
class T,
class Compare>
244 template<
class Key,
class T,
class Compare>
245 inline bool operator<(const Map<Key, T, Compare>& x,
248 return *x.
m_impl < *y.m_impl;
250 template <
class Key,
class T,
class Compare>