30#ifndef _STLP_INTERNAL_MAP_H
31#define _STLP_INTERNAL_MAP_H
33#ifndef _STLP_INTERNAL_TREE_H
42template <
class _Key,
class _Tp, _STLP_DFL_TMPL_PARAM(_Compare, less<_Key> ),
43 _STLP_DEFAULT_PAIR_ALLOCATOR_
SELECT(_STLP_CONST _Key, _Tp) >
45#
if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND)
62 friend class map<_Key,_Tp,_Compare,
_Alloc>;
81 typedef typename _Rep_type::pointer
pointer;
100#if !defined (_STLP_DONT_SUP_DFLT_PARAM)
101 explicit map(
const _Compare& __comp,
104 explicit map(
const _Compare& __comp)
108 :
_M_t(__comp, __a) {}
110#if defined (_STLP_MEMBER_TEMPLATES)
111 template <
class _InputIterator>
112 map(_InputIterator __first, _InputIterator
__last)
116 template <
class _InputIterator>
117 map(_InputIterator __first, _InputIterator
__last,
const _Compare& __comp,
121# if defined (_STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS)
122 template <
class _InputIterator>
123 map(_InputIterator __first, _InputIterator
__last,
const _Compare& __comp)
148#if !defined (_STLP_NO_MOVE_SEMANTIC)
180 return (*__i).second;
183#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER)
184 void _M_swap_workaround(
_Self& __x) {
swap(__x); }
189 {
return _M_t.insert_unique(__x); }
191 {
return _M_t.insert_unique(__pos, __x); }
192#ifdef _STLP_MEMBER_TEMPLATES
193 template <
class _InputIterator>
194 void insert(_InputIterator __first, _InputIterator
__last)
226 {
return _M_t.equal_range_unique(__x); }
229 {
return _M_t.equal_range_unique(__x); }
235template <
class _Key,
class _Tp, _STLP_DFL_TMPL_PARAM(_Compare, less<_Key> ),
236 _STLP_DEFAULT_PAIR_ALLOCATOR_
SELECT(_STLP_CONST _Key, _Tp) >
238#
if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND)
295 :
_M_t(__comp, __a) { }
297#ifdef _STLP_MEMBER_TEMPLATES
298 template <
class _InputIterator>
302# ifdef _STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS
303 template <
class _InputIterator>
305 const _Compare& __comp)
308 template <
class _InputIterator>
310 const _Compare& __comp,
318 const _Compare& __comp,
326 const _Compare& __comp,
333#if !defined (_STLP_NO_MOVE_SEMANTIC)
361#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER)
362 void _M_swap_workaround(
_Self& __x) {
swap(__x); }
368#if defined (_STLP_MEMBER_TEMPLATES)
369 template <
class _InputIterator>
370 void insert(_InputIterator __first, _InputIterator
__last)
401 {
return _M_t.equal_range(__x); }
404 {
return _M_t.equal_range(__x); }
407#define _STLP_TEMPLATE_HEADER template <class _Key, class _Tp, class _Compare, class _Alloc>
408#define _STLP_TEMPLATE_CONTAINER map<_Key,_Tp,_Compare,_Alloc>
410#undef _STLP_TEMPLATE_CONTAINER
411#define _STLP_TEMPLATE_CONTAINER multimap<_Key,_Tp,_Compare,_Alloc>
413#undef _STLP_TEMPLATE_CONTAINER
414#undef _STLP_TEMPLATE_HEADER
416#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) && !defined (_STLP_NO_MOVE_SEMANTIC)
417template <
class _Key,
class _Tp,
class _Compare,
class _Alloc>
422template <
class _Key,
class _Tp,
class _Compare,
class _Alloc>
_STLP_INLINE_LOOP _InputIter __last
#define _STLP_DEFAULT_CONSTRUCTED(_TTp)
#define _STLP_SELECT1ST(__x, __y)
#define _STLP_CREATE_ITERATOR_TRAITS(Motif, Traits)
void get(int argc, const char *argv[])
value_compare(_Compare __c)
bool operator()(const value_type &__x, const value_type &__y) const
pair< _STLP_CONST _Key, _Tp > value_type
_Rep_type::const_reference const_reference
_STLP_TEMPLATE_FOR_CONT_EXT const_iterator lower_bound(const _KT &__x) const
_STLP_TEMPLATE_FOR_CONT_EXT iterator find(const _KT &__x)
_STLP_PRIV _MapTraitsT< value_type > _MapTraits
map(__move_source< _Self > src)
size_type erase(const key_type &__x)
_Rep_type::reverse_iterator reverse_iterator
_STLP_TEMPLATE_FOR_CONT_EXT _Tp & operator[](const _KT &__k)
void erase(iterator __first, iterator __last)
map(const_iterator __first, const_iterator __last, const _Compare &__comp, const allocator_type &__a=allocator_type())
size_type max_size() const
const_iterator begin() const
value_compare value_comp() const
_STLP_TEMPLATE_FOR_CONT_EXT const_iterator upper_bound(const _KT &__x) const
_Rep_type::allocator_type allocator_type
key_compare key_comp() const
_Self & operator=(const _Self &__x)
pair< iterator, bool > insert(const value_type &__x)
_STLP_TEMPLATE_FOR_CONT_EXT iterator lower_bound(const _KT &__x)
_Rep_type::const_pointer const_pointer
_Rep_type::reference reference
iterator insert(iterator __pos, const value_type &__x)
_STLP_TEMPLATE_FOR_CONT_EXT pair< iterator, iterator > equal_range(const _KT &__x)
map(const value_type *__first, const value_type *__last)
allocator_type get_allocator() const
_Rep_type::size_type size_type
_Rep_type::iterator iterator
_STLP_TEMPLATE_FOR_CONT_EXT size_type count(const _KT &__x) const
_STLP_TEMPLATE_FOR_CONT_EXT pair< const_iterator, const_iterator > equal_range(const _KT &__x) const
const_reverse_iterator rend() const
void insert(const value_type *__first, const value_type *__last)
_Rep_type::pointer pointer
_Rep_type::const_reverse_iterator const_reverse_iterator
map(const _Compare &__comp, const allocator_type &__a=allocator_type())
_STLP_TEMPLATE_FOR_CONT_EXT iterator upper_bound(const _KT &__x)
void insert(const_iterator __first, const_iterator __last)
reverse_iterator rbegin()
map(const_iterator __first, const_iterator __last)
map< _Key, _Tp, _Compare, _Alloc > _Self
void erase(iterator __pos)
_STLP_TEMPLATE_FOR_CONT_EXT const_iterator find(const _KT &__x) const
_STLP_PRIV _Rb_tree< key_type, key_compare, value_type, _STLP_SELECT1ST(value_type, _Key), _MapTraits, _Alloc > _Rep_type
const_reverse_iterator rbegin() const
map(const value_type *__first, const value_type *__last, const _Compare &__comp, const allocator_type &__a=allocator_type())
_Rep_type::const_iterator const_iterator
const_iterator end() const
_Rep_type::difference_type difference_type
value_compare(_Compare __c)
bool operator()(const value_type &__x, const value_type &__y) const
_Rep_type::const_reference const_reference
size_type max_size() const
_Rep_type::difference_type difference_type
_STLP_PRIV _Rb_tree< key_type, key_compare, value_type, _STLP_SELECT1ST(value_type, _Key), _MultimapTraits, _Alloc > _Rep_type
_Rep_type::const_iterator const_iterator
reverse_iterator rbegin()
key_compare key_comp() const
void erase(iterator __pos)
_Rep_type::size_type size_type
_STLP_TEMPLATE_FOR_CONT_EXT const_iterator lower_bound(const _KT &__x) const
pair< _STLP_CONST _Key, _Tp > value_type
void insert(const value_type *__first, const value_type *__last)
multimap(const value_type *__first, const value_type *__last, const _Compare &__comp, const allocator_type &__a=allocator_type())
_STLP_TEMPLATE_FOR_CONT_EXT const_iterator upper_bound(const _KT &__x) const
void insert(const_iterator __first, const_iterator __last)
multimap(const _Compare &__comp, const allocator_type &__a=allocator_type())
const_iterator begin() const
multimap(__move_source< _Self > src)
_Rep_type::allocator_type allocator_type
multimap(const_iterator __first, const_iterator __last)
_Rep_type::iterator iterator
multimap< _Key, _Tp, _Compare, _Alloc > _Self
_STLP_TEMPLATE_FOR_CONT_EXT pair< const_iterator, const_iterator > equal_range(const _KT &__x) const
_STLP_PRIV _MultimapTraitsT< value_type > _MultimapTraits
_STLP_TEMPLATE_FOR_CONT_EXT iterator lower_bound(const _KT &__x)
value_compare value_comp() const
iterator insert(iterator __pos, const value_type &__x)
_Rep_type::const_reverse_iterator const_reverse_iterator
allocator_type get_allocator() const
size_type erase(const key_type &__x)
multimap(const _Self &__x)
_Self & operator=(const _Self &__x)
_Rep_type::reference reference
_STLP_TEMPLATE_FOR_CONT_EXT iterator upper_bound(const _KT &__x)
_Rep_type::pointer pointer
_STLP_TEMPLATE_FOR_CONT_EXT pair< iterator, iterator > equal_range(const _KT &__x)
_STLP_TEMPLATE_FOR_CONT_EXT const_iterator find(const _KT &__x) const
void erase(iterator __first, iterator __last)
multimap(const value_type *__first, const value_type *__last)
const_iterator end() const
_Rep_type::reverse_iterator reverse_iterator
_STLP_TEMPLATE_FOR_CONT_EXT iterator find(const _KT &__x)
iterator insert(const value_type &__x)
_STLP_TEMPLATE_FOR_CONT_EXT size_type count(const _KT &__x) const
const_reverse_iterator rend() const
_Rep_type::const_pointer const_pointer
multimap(const_iterator __first, const_iterator __last, const _Compare &__comp, const allocator_type &__a=allocator_type())
const_reverse_iterator rbegin() const
#define _STLP_TEMPLATE_FOR_CONT_EXT
#define _STLP_ALLOCATOR_TYPE_DFL
#define _STLP_KEY_TYPE_FOR_CONT_EXT(type)
#define _STLP_BEGIN_NAMESPACE
#define _STLP_END_NAMESPACE