swap(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __t);
// Insert/erase.
- pair<iterator,bool>
- insert_unique(const value_type& __x);
+ pair<iterator, bool>
+ _M_insert_unique(const value_type& __x);
iterator
- insert_equal(const value_type& __x);
+ _M_insert_equal(const value_type& __x);
iterator
- insert_unique(iterator __position, const value_type& __x);
+ _M_insert_unique(iterator __position, const value_type& __x);
const_iterator
- insert_unique(const_iterator __position, const value_type& __x);
+ _M_insert_unique(const_iterator __position, const value_type& __x);
iterator
- insert_equal(iterator __position, const value_type& __x);
+ _M_insert_equal(iterator __position, const value_type& __x);
const_iterator
- insert_equal(const_iterator __position, const value_type& __x);
+ _M_insert_equal(const_iterator __position, const value_type& __x);
template<typename _InputIterator>
void
- insert_unique(_InputIterator __first, _InputIterator __last);
+ _M_insert_unique(_InputIterator __first, _InputIterator __last);
template<typename _InputIterator>
void
- insert_equal(_InputIterator __first, _InputIterator __last);
+ _M_insert_equal(_InputIterator __first, _InputIterator __last);
void
erase(iterator __position);
typename _Compare, typename _Alloc>
typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
- insert_equal(const _Val& __v)
+ _M_insert_equal(const _Val& __v)
{
_Link_type __x = _M_begin();
_Link_type __y = _M_end();
swap(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __t)
{
if (_M_root() == 0)
- {
- if (__t._M_root() != 0)
{
- _M_root() = __t._M_root();
- _M_leftmost() = __t._M_leftmost();
- _M_rightmost() = __t._M_rightmost();
- _M_root()->_M_parent = _M_end();
-
- __t._M_root() = 0;
- __t._M_leftmost() = __t._M_end();
- __t._M_rightmost() = __t._M_end();
+ if (__t._M_root() != 0)
+ {
+ _M_root() = __t._M_root();
+ _M_leftmost() = __t._M_leftmost();
+ _M_rightmost() = __t._M_rightmost();
+ _M_root()->_M_parent = _M_end();
+
+ __t._M_root() = 0;
+ __t._M_leftmost() = __t._M_end();
+ __t._M_rightmost() = __t._M_end();
+ }
}
- }
else if (__t._M_root() == 0)
- {
- __t._M_root() = _M_root();
- __t._M_leftmost() = _M_leftmost();
- __t._M_rightmost() = _M_rightmost();
- __t._M_root()->_M_parent = __t._M_end();
-
- _M_root() = 0;
- _M_leftmost() = _M_end();
- _M_rightmost() = _M_end();
- }
+ {
+ __t._M_root() = _M_root();
+ __t._M_leftmost() = _M_leftmost();
+ __t._M_rightmost() = _M_rightmost();
+ __t._M_root()->_M_parent = __t._M_end();
+
+ _M_root() = 0;
+ _M_leftmost() = _M_end();
+ _M_rightmost() = _M_end();
+ }
else
- {
- 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(_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();
+ }
// No need to swap header's color as it does not change.
std::swap(this->_M_impl._M_node_count, __t._M_impl._M_node_count);
std::swap(this->_M_impl._M_key_compare, __t._M_impl._M_key_compare);
-
+
// _GLIBCXX_RESOLVE_LIB_DEFECTS
// 431. Swapping containers with unequal allocators.
std::__alloc_swap<_Node_allocator>::
pair<typename _Rb_tree<_Key, _Val, _KeyOfValue,
_Compare, _Alloc>::iterator, bool>
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
- insert_unique(const _Val& __v)
+ _M_insert_unique(const _Val& __v)
{
_Link_type __x = _M_begin();
_Link_type __y = _M_end();
typename _Compare, typename _Alloc>
typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
- insert_unique(iterator __position, const _Val& __v)
+ _M_insert_unique(iterator __position, const _Val& __v)
{
// end()
if (__position._M_node == _M_end())
_KeyOfValue()(__v)))
return _M_insert(0, _M_rightmost(), __v);
else
- return insert_unique(__v).first;
+ return _M_insert_unique(__v).first;
}
else if (_M_impl._M_key_compare(_KeyOfValue()(__v),
_S_key(__position._M_node)))
__position._M_node, __v);
}
else
- return insert_unique(__v).first;
+ return _M_insert_unique(__v).first;
}
else if (_M_impl._M_key_compare(_S_key(__position._M_node),
_KeyOfValue()(__v)))
return _M_insert(__after._M_node, __after._M_node, __v);
}
else
- return insert_unique(__v).first;
+ return _M_insert_unique(__v).first;
}
else
return __position; // Equivalent keys.
typename _Compare, typename _Alloc>
typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::const_iterator
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
- insert_unique(const_iterator __position, const _Val& __v)
+ _M_insert_unique(const_iterator __position, const _Val& __v)
{
// end()
if (__position._M_node == _M_end())
_KeyOfValue()(__v)))
return _M_insert(0, _M_rightmost(), __v);
else
- return const_iterator(insert_unique(__v).first);
+ return const_iterator(_M_insert_unique(__v).first);
}
else if (_M_impl._M_key_compare(_KeyOfValue()(__v),
_S_key(__position._M_node)))
__position._M_node, __v);
}
else
- return const_iterator(insert_unique(__v).first);
+ return const_iterator(_M_insert_unique(__v).first);
}
else if (_M_impl._M_key_compare(_S_key(__position._M_node),
_KeyOfValue()(__v)))
return _M_insert(__after._M_node, __after._M_node, __v);
}
else
- return const_iterator(insert_unique(__v).first);
+ return const_iterator(_M_insert_unique(__v).first);
}
else
return __position; // Equivalent keys.
typename _Compare, typename _Alloc>
typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
- insert_equal(iterator __position, const _Val& __v)
+ _M_insert_equal(iterator __position, const _Val& __v)
{
// end()
if (__position._M_node == _M_end())
_S_key(_M_rightmost())))
return _M_insert(0, _M_rightmost(), __v);
else
- return insert_equal(__v);
+ return _M_insert_equal(__v);
}
else if (!_M_impl._M_key_compare(_S_key(__position._M_node),
_KeyOfValue()(__v)))
__position._M_node, __v);
}
else
- return insert_equal(__v);
+ return _M_insert_equal(__v);
}
else
{
return _M_insert(__after._M_node, __after._M_node, __v);
}
else
- return insert_equal(__v);
+ return _M_insert_equal(__v);
}
}
typename _Compare, typename _Alloc>
typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::const_iterator
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
- insert_equal(const_iterator __position, const _Val& __v)
+ _M_insert_equal(const_iterator __position, const _Val& __v)
{
// end()
if (__position._M_node == _M_end())
_S_key(_M_rightmost())))
return _M_insert(0, _M_rightmost(), __v);
else
- return const_iterator(insert_equal(__v));
+ return const_iterator(_M_insert_equal(__v));
}
else if (!_M_impl._M_key_compare(_S_key(__position._M_node),
_KeyOfValue()(__v)))
__position._M_node, __v);
}
else
- return const_iterator(insert_equal(__v));
+ return const_iterator(_M_insert_equal(__v));
}
else
{
return _M_insert(__after._M_node, __after._M_node, __v);
}
else
- return const_iterator(insert_equal(__v));
+ return const_iterator(_M_insert_equal(__v));
}
}
template<class _II>
void
_Rb_tree<_Key, _Val, _KoV, _Cmp, _Alloc>::
- insert_equal(_II __first, _II __last)
+ _M_insert_equal(_II __first, _II __last)
{
for (; __first != __last; ++__first)
- insert_equal(end(), *__first);
+ _M_insert_equal(end(), *__first);
}
template<typename _Key, typename _Val, typename _KoV,
template<class _II>
void
_Rb_tree<_Key, _Val, _KoV, _Cmp, _Alloc>::
- insert_unique(_II __first, _II __last)
+ _M_insert_unique(_II __first, _II __last)
{
for (; __first != __last; ++__first)
- insert_unique(end(), *__first);
+ _M_insert_unique(end(), *__first);
}
template<typename _Key, typename _Val, typename _KeyOfValue,