39 #ifndef BLOCXX_MAP_HPP_INCLUDE_GUARD_ 40 #define BLOCXX_MAP_HPP_INCLUDE_GUARD_ 41 #include "blocxx/BLOCXX_config.h" 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>
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>
250 template <
class Key,
class T,
class Compare>
const_iterator upper_bound(const key_type &x) const
std::map< Key, T, Compare > M
const_iterator lower_bound(const key_type &x) const
std::pair< const_iterator, const_iterator > equal_range(const key_type &x) const
iterator lower_bound(const key_type &x)
key_compare key_comp() const
std::pair< iterator, bool > insert(const value_type &x)
reverse_iterator rbegin()
void swap(Array< T > &x, Array< T > &y)
void swap(COWReference< T > &arg)
M::difference_type difference_type
size_type count(const key_type &x) const
void erase(iterator position)
std::pair< iterator, iterator > equal_range(const key_type &x)
T & operator[](const key_type &k)
void insert(InputIterator first, InputIterator last)
void swap(Map< Key, T, Compare > &x)
const_iterator find(const key_type &x) const
M::const_reverse_iterator const_reverse_iterator
M::mapped_type mapped_type
Map(InputIterator first, InputIterator last)
M::value_compare value_compare
M::reverse_iterator reverse_iterator
size_type erase(const key_type &x)
bool operator==(const Array< T > &x, const Array< T > &y)
M::const_pointer const_pointer
iterator upper_bound(const key_type &x)
size_type max_size() const
Map(InputIterator first, InputIterator last, const Compare &comp)
value_compare value_comp() const
M::const_iterator const_iterator
M::key_compare key_compare
const_iterator begin() const
bool operator<(const Array< T > &x, const Array< T > &y)
M::const_reference const_reference
T * COWReferenceClone(T *obj)
iterator find(const key_type &x)
const_iterator end() const
const_reverse_iterator rend() const
const_reverse_iterator rbegin() const
iterator insert(iterator position, const value_type &x)
void erase(iterator first, iterator last)