// time begin(), and to the rightmost node of the tree, to enable
// linear time performance when used with the generic set algorithms
// (set_union, etc.)
- //
+ //
// (2) when a node being deleted has two children its successor node
// is relinked into its place, rather than copied, so that the only
// iterators invalidated are those referring to the deleted node.
typedef _Tp* pointer;
typedef bidirectional_iterator_tag iterator_category;
- typedef ptrdiff_t difference_type;
+ typedef ptrdiff_t difference_type;
- typedef _Rb_tree_iterator<_Tp> _Self;
+ typedef _Rb_tree_iterator<_Tp> _Self;
typedef _Rb_tree_node_base::_Base_ptr _Base_ptr;
- typedef _Rb_tree_node<_Tp>* _Link_type;
+ typedef _Rb_tree_node<_Tp>* _Link_type;
_Rb_tree_iterator() _GLIBCXX_NOEXCEPT
: _M_node() { }
template<typename _Tp>
struct _Rb_tree_const_iterator
{
- typedef _Tp value_type;
+ typedef _Tp value_type;
typedef const _Tp& reference;
typedef const _Tp* pointer;
typedef _Rb_tree_iterator<_Tp> iterator;
typedef bidirectional_iterator_tag iterator_category;
- typedef ptrdiff_t difference_type;
+ typedef ptrdiff_t difference_type;
- typedef _Rb_tree_const_iterator<_Tp> _Self;
- typedef _Rb_tree_node_base::_Const_Base_ptr _Base_ptr;
- typedef const _Rb_tree_node<_Tp>* _Link_type;
+ typedef _Rb_tree_const_iterator<_Tp> _Self;
+ typedef _Rb_tree_node_base::_Const_Base_ptr _Base_ptr;
+ typedef const _Rb_tree_node<_Tp>* _Link_type;
_Rb_tree_const_iterator() _GLIBCXX_NOEXCEPT
: _M_node() { }
template<typename _Val>
inline bool
operator==(const _Rb_tree_iterator<_Val>& __x,
- const _Rb_tree_const_iterator<_Val>& __y) _GLIBCXX_NOEXCEPT
+ const _Rb_tree_const_iterator<_Val>& __y) _GLIBCXX_NOEXCEPT
{ return __x._M_node == __y._M_node; }
template<typename _Val>
inline bool
operator!=(const _Rb_tree_iterator<_Val>& __x,
- const _Rb_tree_const_iterator<_Val>& __y) _GLIBCXX_NOEXCEPT
+ const _Rb_tree_const_iterator<_Val>& __y) _GLIBCXX_NOEXCEPT
{ return __x._M_node != __y._M_node; }
void
_Rb_tree_insert_and_rebalance(const bool __insert_left,
- _Rb_tree_node_base* __x,
- _Rb_tree_node_base* __p,
- _Rb_tree_node_base& __header) throw ();
+ _Rb_tree_node_base* __x,
+ _Rb_tree_node_base* __p,
+ _Rb_tree_node_base& __header) throw ();
_Rb_tree_node_base*
_Rb_tree_rebalance_for_erase(_Rb_tree_node_base* const __z,
#endif
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc = allocator<_Val> >
+ typename _Compare, typename _Alloc = allocator<_Val> >
class _Rb_tree
{
typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template
- rebind<_Rb_tree_node<_Val> >::other _Node_allocator;
+ rebind<_Rb_tree_node<_Val> >::other _Node_allocator;
typedef __gnu_cxx::__alloc_traits<_Node_allocator> _Alloc_traits;
_Node_allocator&
_M_get_Node_allocator() _GLIBCXX_NOEXCEPT
{ return *static_cast<_Node_allocator*>(&this->_M_impl); }
-
+
const _Node_allocator&
_M_get_Node_allocator() const _GLIBCXX_NOEXCEPT
{ return *static_cast<const _Node_allocator*>(&this->_M_impl); }
}
template<typename... _Args>
- _Link_type
- _M_create_node(_Args&&... __args)
+ _Link_type
+ _M_create_node(_Args&&... __args)
{
_Link_type __tmp = _M_get_node();
_M_construct_node(__tmp, std::forward<_Args>(__args)...);
}
protected:
+#if _GLIBCXX_INLINE_VERSION
+ template<typename _Key_compare>
+#else
// Unused _Is_pod_comparator is kept as it is part of mangled name.
template<typename _Key_compare,
bool /* _Is_pod_comparator */ = __is_pod(_Key_compare)>
- struct _Rb_tree_impl
+#endif
+ struct _Rb_tree_impl
: public _Node_allocator
, public _Rb_tree_key_compare<_Key_compare>
, public _Rb_tree_header
- {
+ {
typedef _Rb_tree_key_compare<_Key_compare> _Base_key_compare;
#if __cplusplus < 201103L
private:
#if __cplusplus >= 201103L
template<typename _Arg, typename _NodeGen>
- iterator
+ iterator
_M_insert_(_Base_ptr __x, _Base_ptr __y, _Arg&& __v, _NodeGen&);
iterator
_M_insert_node(_Base_ptr __x, _Base_ptr __y, _Link_type __z);
template<typename _Arg>
- iterator
- _M_insert_lower(_Base_ptr __y, _Arg&& __v);
+ iterator
+ _M_insert_lower(_Base_ptr __y, _Arg&& __v);
template<typename _Arg>
- iterator
- _M_insert_equal_lower(_Arg&& __x);
+ iterator
+ _M_insert_equal_lower(_Arg&& __x);
iterator
_M_insert_lower_node(_Base_ptr __p, _Link_type __z);
{ return _M_impl._M_node_count == 0; }
size_type
- size() const _GLIBCXX_NOEXCEPT
+ size() const _GLIBCXX_NOEXCEPT
{ return _M_impl._M_node_count; }
size_type
// Insert/erase.
#if __cplusplus >= 201103L
template<typename _Arg>
- pair<iterator, bool>
- _M_insert_unique(_Arg&& __x);
+ pair<iterator, bool>
+ _M_insert_unique(_Arg&& __x);
template<typename _Arg>
- iterator
- _M_insert_equal(_Arg&& __x);
+ iterator
+ _M_insert_equal(_Arg&& __x);
template<typename _Arg, typename _NodeGen>
- iterator
+ iterator
_M_insert_unique_(const_iterator __pos, _Arg&& __x, _NodeGen&);
template<typename _Arg>
#endif
template<typename _InputIterator>
- void
- _M_insert_unique(_InputIterator __first, _InputIterator __last);
+ void
+ _M_insert_unique(_InputIterator __first, _InputIterator __last);
template<typename _InputIterator>
- void
- _M_insert_equal(_InputIterator __first, _InputIterator __last);
+ void
+ _M_insert_equal(_InputIterator __first, _InputIterator __last);
private:
void
void
clear() _GLIBCXX_NOEXCEPT
{
- _M_erase(_M_begin());
+ _M_erase(_M_begin());
_M_impl._M_reset();
}
};
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
inline bool
operator==(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
}
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
inline bool
operator<(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
}
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
inline bool
operator!=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
{ return !(__x == __y); }
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
inline bool
operator>(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
{ return __y < __x; }
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
inline bool
operator<=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
{ return !(__y < __x); }
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
inline bool
operator>=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
{ return !(__x < __y); }
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
inline void
swap(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
#if __cplusplus >= 201103L
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
_Rb_tree(_Rb_tree&& __x, _Node_allocator&& __a)
: _M_impl(__x._M_impl._M_key_compare, std::move(__a))
}
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
void
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
_M_move_data(_Rb_tree& __x, std::false_type)
}
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
inline void
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
_M_move_assign(_Rb_tree& __x, true_type)
}
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
void
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
_M_move_assign(_Rb_tree& __x, false_type)
}
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
inline _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>&
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
operator=(_Rb_tree&& __x)
}
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
template<typename _Iterator>
void
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
}
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
template<typename _Iterator>
void
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
#endif
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>&
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
operator=(const _Rb_tree& __x)
}
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
#if __cplusplus >= 201103L
template<typename _Arg, typename _NodeGen>
#else
}
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
#if __cplusplus >= 201103L
template<typename _Arg>
#endif
}
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
#if __cplusplus >= 201103L
template<typename _Arg>
#endif
{
__y = __x;
__x = !_M_impl._M_key_compare(_S_key(__x), _KeyOfValue()(__v)) ?
- _S_left(__x) : _S_right(__x);
+ _S_left(__x) : _S_right(__x);
}
return _M_insert_lower(__y, _GLIBCXX_FORWARD(_Arg, __v));
}
}
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
void
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
_M_erase(_Link_type __x)
}
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
typename _Rb_tree<_Key, _Val, _KeyOfValue,
_Compare, _Alloc>::iterator
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
}
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
typename _Rb_tree<_Key, _Val, _KeyOfValue,
_Compare, _Alloc>::const_iterator
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
}
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
typename _Rb_tree<_Key, _Val, _KeyOfValue,
_Compare, _Alloc>::iterator
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
}
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
typename _Rb_tree<_Key, _Val, _KeyOfValue,
_Compare, _Alloc>::const_iterator
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
}
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
pair<typename _Rb_tree<_Key, _Val, _KeyOfValue,
_Compare, _Alloc>::iterator,
typename _Rb_tree<_Key, _Val, _KeyOfValue,
__y = __x, __x = _S_left(__x);
__xu = _S_right(__xu);
return pair<iterator,
- iterator>(_M_lower_bound(__x, __y, __k),
+ iterator>(_M_lower_bound(__x, __y, __k),
_M_upper_bound(__xu, __yu, __k));
}
}
}
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
pair<typename _Rb_tree<_Key, _Val, _KeyOfValue,
_Compare, _Alloc>::const_iterator,
typename _Rb_tree<_Key, _Val, _KeyOfValue,
__y = __x, __x = _S_left(__x);
__xu = _S_right(__xu);
return pair<const_iterator,
- const_iterator>(_M_lower_bound(__x, __y, __k),
+ const_iterator>(_M_lower_bound(__x, __y, __k),
_M_upper_bound(__xu, __yu, __k));
}
}
}
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
void
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
swap(_Rb_tree& __t)
std::swap(_M_root(),__t._M_root());
std::swap(_M_leftmost(),__t._M_leftmost());
std::swap(_M_rightmost(),__t._M_rightmost());
-
+
_M_root()->_M_parent = _M_end();
__t._M_root()->_M_parent = __t._M_end();
std::swap(this->_M_impl._M_node_count, __t._M_impl._M_node_count);
}
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
pair<typename _Rb_tree<_Key, _Val, _KeyOfValue,
_Compare, _Alloc>::_Base_ptr,
typename _Rb_tree<_Key, _Val, _KeyOfValue,
}
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
pair<typename _Rb_tree<_Key, _Val, _KeyOfValue,
_Compare, _Alloc>::_Base_ptr,
typename _Rb_tree<_Key, _Val, _KeyOfValue,
{
__y = __x;
__x = _M_impl._M_key_compare(__k, _S_key(__x)) ?
- _S_left(__x) : _S_right(__x);
+ _S_left(__x) : _S_right(__x);
}
return _Res(__x, __y);
}
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
#if __cplusplus >= 201103L
template<typename _Arg>
#endif
}
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
#if __cplusplus >= 201103L
template<typename _Arg>
#endif
}
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
pair<typename _Rb_tree<_Key, _Val, _KeyOfValue,
_Compare, _Alloc>::_Base_ptr,
- typename _Rb_tree<_Key, _Val, _KeyOfValue,
+ typename _Rb_tree<_Key, _Val, _KeyOfValue,
_Compare, _Alloc>::_Base_ptr>
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
_M_get_insert_hint_unique_pos(const_iterator __position,
}
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
#if __cplusplus >= 201103L
template<typename _Arg, typename _NodeGen>
#else
}
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
pair<typename _Rb_tree<_Key, _Val, _KeyOfValue,
_Compare, _Alloc>::_Base_ptr,
- typename _Rb_tree<_Key, _Val, _KeyOfValue,
+ typename _Rb_tree<_Key, _Val, _KeyOfValue,
_Compare, _Alloc>::_Base_ptr>
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
_M_get_insert_hint_equal_pos(const_iterator __position, const key_type& __k)
}
else
{
- // ... then try after.
+ // ... then try after.
iterator __after = __pos;
if (__pos._M_node == _M_rightmost())
return _Res(0, _M_rightmost());
}
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
#if __cplusplus >= 201103L
template<typename _Arg, typename _NodeGen>
#else
#if __cplusplus >= 201103L
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
_M_insert_node(_Base_ptr __x, _Base_ptr __p, _Link_type __z)
}
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
_M_insert_lower_node(_Base_ptr __p, _Link_type __z)
}
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
_M_insert_equal_lower_node(_Link_type __z)
{
__y = __x;
__x = !_M_impl._M_key_compare(_S_key(__x), _S_key(__z)) ?
- _S_left(__x) : _S_right(__x);
+ _S_left(__x) : _S_right(__x);
}
return _M_insert_lower_node(__y, __z);
}
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
template<typename... _Args>
pair<typename _Rb_tree<_Key, _Val, _KeyOfValue,
_Compare, _Alloc>::iterator, bool>
}
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
template<typename... _Args>
typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
}
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
template<typename... _Args>
typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
}
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
template<typename... _Args>
typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
#endif
template<typename _Key, typename _Val, typename _KoV,
- typename _Cmp, typename _Alloc>
+ typename _Cmp, typename _Alloc>
template<class _II>
void
_Rb_tree<_Key, _Val, _KoV, _Cmp, _Alloc>::
}
template<typename _Key, typename _Val, typename _KoV,
- typename _Cmp, typename _Alloc>
+ typename _Cmp, typename _Alloc>
template<class _II>
void
_Rb_tree<_Key, _Val, _KoV, _Cmp, _Alloc>::
}
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
void
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
_M_erase_aux(const_iterator __position)
}
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
void
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
_M_erase_aux(const_iterator __first, const_iterator __last)
}
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::size_type
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
erase(const _Key& __x)
}
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
void
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
erase(const _Key* __first, const _Key* __last)
}
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
typename _Rb_tree<_Key, _Val, _KeyOfValue,
_Compare, _Alloc>::iterator
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
}
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
typename _Rb_tree<_Key, _Val, _KeyOfValue,
_Compare, _Alloc>::const_iterator
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
{
const_iterator __j = _M_lower_bound(_M_begin(), _M_end(), __k);
return (__j == end()
- || _M_impl._M_key_compare(__k,
+ || _M_impl._M_key_compare(__k,
_S_key(__j._M_node))) ? end() : __j;
}
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::size_type
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
count(const _Key& __k) const
_GLIBCXX_PURE unsigned int
_Rb_tree_black_count(const _Rb_tree_node_base* __node,
- const _Rb_tree_node_base* __root) throw ();
+ const _Rb_tree_node_base* __root) throw ();
template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
+ typename _Compare, typename _Alloc>
bool
_Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>::__rb_verify() const
{