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>
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;
83 Map() : m_impl(new M) { }
84 explicit Map(M* toWrap) : m_impl(toWrap)
86 explicit Map(
const Compare& comp)
87 : m_impl(new M(comp)) { }
88 template <
class InputIterator>
89 Map(InputIterator first, InputIterator last) :
90 m_impl(new M(first, 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();
112 return m_impl->begin();
116 return m_impl->begin();
120 return m_impl->end();
122 const_iterator
end()
const 124 return m_impl->end();
128 return m_impl->rbegin();
132 return m_impl->rbegin();
136 return m_impl->rend();
138 const_reverse_iterator
rend()
const 140 return m_impl->rend();
144 return m_impl->empty();
148 return m_impl->size();
152 return m_impl->max_size();
156 return m_impl->operator[](k);
162 std::pair<iterator, bool>
insert(
const value_type& x)
164 return m_impl->insert(x);
166 iterator
insert(iterator position,
const value_type& x)
168 return m_impl->insert(position, x);
170 template <
class InputIterator>
171 void insert(InputIterator first, InputIterator last)
173 m_impl->insert(first, last);
177 m_impl->erase(position);
181 return m_impl->erase(x);
183 void erase(iterator first, iterator last)
185 m_impl->erase(first, last);
191 iterator
find(
const key_type& x)
193 return m_impl->find(x);
195 const_iterator
find(
const key_type& x)
const 197 return m_impl->find(x);
199 size_type
count(
const key_type& x)
const 201 return m_impl->count(x);
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>
std::map< Key, T, Compare > M
const_iterator begin() const
iterator lower_bound(const key_type &x)
std::pair< iterator, bool > insert(const value_type &x)
const_iterator lower_bound(const key_type &x) const
value_compare value_comp() const
reverse_iterator rbegin()
key_compare key_comp() const
const_iterator find(const key_type &x) const
void swap(COWReference< T > &arg)
std::pair< const_iterator, const_iterator > equal_range(const key_type &x) const
M::difference_type difference_type
void erase(iterator position)
std::pair< iterator, iterator > equal_range(const key_type &x)
T & operator[](const key_type &k)
const_iterator end() const
void insert(InputIterator first, InputIterator last)
void swap(Map< Key, T, Compare > &x)
size_type max_size() 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)
size_type count(const key_type &x) const
M::const_pointer const_pointer
iterator upper_bound(const key_type &x)
const_iterator upper_bound(const key_type &x) const
friend bool operator==(const Map< Key, T, Compare > &x, const Map< Key, T, Compare > &y)
Map(InputIterator first, InputIterator last, const Compare &comp)
M::const_iterator const_iterator
M::key_compare key_compare
const_reverse_iterator rbegin() const
M::const_reference const_reference
T * COWReferenceClone(T *obj)
iterator find(const key_type &x)
iterator insert(iterator position, const value_type &x)
const_reverse_iterator rend() const
void erase(iterator first, iterator last)