39#ifndef BLOCXX_MAP_HPP_INCLUDE_GUARD_
40#define BLOCXX_MAP_HPP_INCLUDE_GUARD_
41#include "blocxx/BLOCXX_config.h"
52template<
class Key,
class T,
class Compare >
class Map;
54template<
class Key,
class T,
class Compare>
58template<
class Key,
class T,
class Compare>
63template<
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);
233template <
class Key,
class T,
class Compare>
236 return new std::map<Key, T, Compare>(*obj);
238template<
class Key,
class T,
class Compare>
244template<
class Key,
class T,
class Compare>
250template <
class Key,
class T,
class Compare>
COWReference A smart pointer that uses non-intrusive reference counting.
size_type count(const key_type &x) const
T & operator[](const key_type &k)
iterator insert(iterator position, const value_type &x)
M::reverse_iterator reverse_iterator
M::const_iterator const_iterator
const_iterator upper_bound(const key_type &x) const
const_reverse_iterator rbegin() const
const_reverse_iterator rend() const
iterator upper_bound(const key_type &x)
const_iterator lower_bound(const key_type &x) const
std::pair< iterator, iterator > equal_range(const key_type &x)
std::map< String, String, std::less< String > > M
M::value_compare value_compare
Map(InputIterator first, InputIterator last, const Compare &comp)
reverse_iterator rbegin()
M::const_reference const_reference
std::pair< const_iterator, const_iterator > equal_range(const key_type &x) const
Map(InputIterator first, InputIterator last)
std::pair< iterator, bool > insert(const value_type &x)
iterator lower_bound(const key_type &x)
M::const_pointer const_pointer
void erase(iterator position)
const_iterator find(const key_type &x) const
M::mapped_type mapped_type
size_type max_size() const
M::const_reverse_iterator const_reverse_iterator
const_iterator end() const
friend bool operator==(const Map< Key, T, Compare > &x, const Map< Key, T, Compare > &y)
key_compare key_comp() const
void insert(InputIterator first, InputIterator last)
M::key_compare key_compare
void erase(iterator first, iterator last)
M::difference_type difference_type
value_compare value_comp() const
iterator find(const key_type &x)
size_type erase(const key_type &x)
void swap(Map< Key, T, Compare > &x)
const_iterator begin() const
T * COWReferenceClone(T *obj)
bool operator<(const Array< T > &x, const Array< T > &y)
bool operator==(const Array< T > &x, const Array< T > &y)
void swap(Array< T > &x, Array< T > &y)