38 #ifndef BLOCXX_SORTED_VECTOR_MAP_HPP_
39 #define BLOCXX_SORTED_VECTOR_MAP_HPP_
40 #include "blocxx/BLOCXX_config.h"
48 namespace BLOCXX_NAMESPACE
51 template <
class Key,
class T,
class Compare>
52 class SortedVectorMapDataCompare
54 typedef std::pair<Key, T>
Data;
58 return keyLess(lhs.first, rhs.first);
70 bool operator()(
const typename Data::first_type& k,
const typename Data::first_type& rhs)
const
75 bool keyLess(
const typename Data::first_type& k1,
76 const typename Data::first_type& k2)
const
78 return Compare()(k1, k2);
84 template<
class Key,
class T,
class Compare>
85 inline bool operator==(
const SortedVectorMap<Key, T, Compare>& x,
86 const SortedVectorMap<Key, T, Compare>& y);
88 template<
class Key,
class T,
class Compare>
89 inline bool operator<(const SortedVectorMap<Key, T, Compare>& x,
90 const SortedVectorMap<Key, T, Compare>& y);
92 template <
class Key,
class T,
class Compare>
93 inline void swap(SortedVectorMap<Key, T, Compare>& x,
94 SortedVectorMap<Key, T, Compare>& y);
96 template<
class Key,
class T,
class Compare>
99 typedef std::pair<Key, T>
Data;
108 typedef typename container_t::pointer
pointer;
123 template <
class InputIterator>
165 return m_impl->max_size();
185 return std::pair<iterator, bool>(
i,
false);
189 return std::pair<iterator, bool>(
m_impl->insert(i, x),
true);
196 return m_impl->insert(i, x);
198 template <
class InputIterator>
199 void insert(InputIterator first, InputIterator last)
207 return m_impl->erase(position);
224 return m_impl->erase(first, last);
256 if (std::binary_search(
m_impl->begin(),
m_impl->end(), x, Compare()))
267 return std::lower_bound(
m_impl->begin(),
m_impl->end(), x, Compare());
271 return std::upper_bound(
m_impl->begin(),
m_impl->end(), x, Compare());
273 std::pair<const_iterator, const_iterator>
276 return std::equal_range(
m_impl->begin(),
m_impl->end(), x, Compare());
286 return (!Compare()(x, y) && !Compare()(y, x));
289 template<
class Key,
class T,
class Compare>
293 return *x.m_impl == *y.m_impl;
295 template<
class Key,
class T,
class Compare>
296 inline bool operator<(const SortedVectorMap<Key, T, Compare>& x,
299 return *x.
m_impl < *y.m_impl;
301 template <
class Key,
class T,
class Compare>
COWReference< container_t > m_impl
bool operator()(const typename Data::first_type &k, const typename Data::first_type &rhs) const
container_t::pointer pointer
std::pair< const key_type, data_type > value_type
SortedVectorMap(InputIterator first, InputIterator last)
container_t::const_reference const_reference
const_iterator upper_bound(const key_type &x) const
void swap(Array< T > &x, Array< T > &y)
container_t::reference reference
container_t::size_type size_type
void swap(COWReference< T > &arg)
const_reverse_iterator rend() const
const_iterator end() const
bool keyLess(const typename Data::first_type &k1, const typename Data::first_type &k2) const
iterator erase(iterator first, iterator last)
bool operator()(const Data &lhs, const typename Data::first_type &k) const
container_t::const_reverse_iterator const_reverse_iterator
data_type & operator[](const key_type &k)
const_iterator lower_bound(const key_type &x) const
size_type count(const key_type &x) const
std::pair< const_iterator, const_iterator > equal_range(const key_type &x) const
void insert(InputIterator first, InputIterator last)
iterator insert(iterator, const value_type &x)
const_iterator begin() const
iterator erase(iterator position)
std::pair< iterator, bool > insert(const value_type &x)
bool operator==(const Array< T > &x, const Array< T > &y)
size_type max_size() const
container_t::const_iterator const_iterator
container_t::reverse_iterator reverse_iterator
container_t::iterator iterator
static bool equivalent(const key_type &x, const key_type &y)
SortedVectorMap(container_t *toWrap)
const_reverse_iterator rbegin() const
void swap(SortedVectorMap< Key, T, Compare > &x)
container_t::difference_type difference_type
size_type erase(const key_type &x)
const_iterator find(const key_type &x) const
bool operator()(const typename Data::first_type &k, const Data &rhs) const
iterator find(const key_type &x)
bool operator()(const Data &lhs, const Data &rhs) const
std::vector< Data > container_t