libstdc++
__gnu_cxx::rb_tree< _Key, _Value, _KeyOfValue, _Compare, _Alloc > Struct Template Reference

Inherits std::_Rb_tree< _Key, _Val, _KeyOfValue, _Compare, _Alloc >.

Public Types

template<typename _Iter >
using __same_value_type = is_same< value_type, typename iterator_traits< _Iter >::value_type >
 
typedef std::_Rb_tree< _Key, _Value, _KeyOfValue, _Compare, _Alloc > _Base
 
template<typename _Compare2 >
using _Compatible_tree = _Rb_tree< _Key, _Val, _KeyOfValue, _Compare2, _Alloc >
 
typedef _Base::allocator_type allocator_type
 
typedef _Rb_tree_const_iterator< value_type > const_iterator
 
typedef const value_type * const_pointer
 
typedef const value_type & const_reference
 
typedef std::reverse_iterator< const_iterator > const_reverse_iterator
 
typedef ptrdiff_t difference_type
 
using insert_return_type = _Node_insert_return< __conditional_t< is_same_v< _Key, _Val >, const_iterator, iterator >, node_type >
 
typedef _Rb_tree_iterator< value_type > iterator
 
typedef _Key key_type
 
using node_type = _Node_handle< _Key, _Val, _Node_allocator >
 
typedef value_type * pointer
 
typedef value_type & reference
 
typedef std::reverse_iterator< iterator > reverse_iterator
 
typedef size_t size_type
 
typedef _Val value_type
 

Public Member Functions

 rb_tree (const _Compare &__comp=_Compare(), const allocator_type &__a=allocator_type())
 
bool __rb_verify () const
 
template<typename _Iterator >
void _M_assign_equal (_Iterator, _Iterator)
 
template<typename _Iterator >
void _M_assign_unique (_Iterator, _Iterator)
 
template<typename _Kt , typename _Req = __has_is_transparent_t<_Compare, _Kt>>
size_type _M_count_tr (const _Kt &__k) const
 
template<typename... _Args>
iterator _M_emplace_equal (_Args &&... __args)
 
template<typename... _Args>
auto _M_emplace_equal (_Args &&... __args) -> iterator
 
template<typename... _Args>
iterator _M_emplace_hint_equal (const_iterator __pos, _Args &&... __args)
 
template<typename... _Args>
auto _M_emplace_hint_equal (const_iterator __pos, _Args &&... __args) -> iterator
 
template<typename... _Args>
iterator _M_emplace_hint_unique (const_iterator __pos, _Args &&... __args)
 
template<typename... _Args>
auto _M_emplace_hint_unique (const_iterator __pos, _Args &&... __args) -> iterator
 
template<typename... _Args>
pair< iterator, bool > _M_emplace_unique (_Args &&... __args)
 
template<typename... _Args>
auto _M_emplace_unique (_Args &&... __args) -> pair< iterator, bool >
 
template<typename _Kt , typename _Req = __has_is_transparent_t<_Compare, _Kt>>
pair< iterator, iterator > _M_equal_range_tr (const _Kt &__k)
 
template<typename _Kt , typename _Req = __has_is_transparent_t<_Compare, _Kt>>
pair< const_iterator, const_iterator > _M_equal_range_tr (const _Kt &__k) const
 
template<typename _Kt , typename _Req = __has_is_transparent_t<_Compare, _Kt>>
iterator _M_find_tr (const _Kt &__k)
 
template<typename _Kt , typename _Req = __has_is_transparent_t<_Compare, _Kt>>
const_iterator _M_find_tr (const _Kt &__k) const
 
pair< _Base_ptr, _Base_ptr > _M_get_insert_equal_pos (const key_type &__k)
 
pair< _Base_ptr, _Base_ptr > _M_get_insert_hint_equal_pos (const_iterator __pos, const key_type &__k)
 
pair< _Base_ptr, _Base_ptr > _M_get_insert_hint_unique_pos (const_iterator __pos, const key_type &__k)
 
pair< _Base_ptr, _Base_ptr > _M_get_insert_unique_pos (const key_type &__k)
 
const _Node_allocator & _M_get_Node_allocator () const noexcept
 
_Node_allocator & _M_get_Node_allocator () noexcept
 
template<typename _Arg >
iterator _M_insert_equal (_Arg &&__x)
 
template<typename _Arg >
iterator _M_insert_equal_ (const_iterator __pos, _Arg &&__x)
 
template<typename _Arg , typename _NodeGen >
iterator _M_insert_equal_ (const_iterator __pos, _Arg &&__x, _NodeGen &)
 
template<typename _InputIterator >
__enable_if_t< __same_value_type< _InputIterator >::value > _M_insert_range_equal (_InputIterator __first, _InputIterator __last)
 
template<typename _InputIterator >
__enable_if_t<!__same_value_type< _InputIterator >::value > _M_insert_range_equal (_InputIterator __first, _InputIterator __last)
 
template<typename _InputIterator >
__enable_if_t< __same_value_type< _InputIterator >::value > _M_insert_range_unique (_InputIterator __first, _InputIterator __last)
 
template<typename _InputIterator >
__enable_if_t<!__same_value_type< _InputIterator >::value > _M_insert_range_unique (_InputIterator __first, _InputIterator __last)
 
template<typename _Arg >
pair< typename _Rb_tree< _Key, _Val, _KeyOfValue, _Compare, _Alloc >::iterator, bool > _M_insert_unique (_Arg &&__v)
 
template<typename _Arg >
pair< iterator, bool > _M_insert_unique (_Arg &&__x)
 
template<typename _Arg >
iterator _M_insert_unique_ (const_iterator __pos, _Arg &&__x)
 
template<typename _Arg , typename _NodeGen >
iterator _M_insert_unique_ (const_iterator __pos, _Arg &&__x, _NodeGen &)
 
template<typename _Kt , typename _Req = __has_is_transparent_t<_Compare, _Kt>>
iterator _M_lower_bound_tr (const _Kt &__k)
 
template<typename _Kt , typename _Req = __has_is_transparent_t<_Compare, _Kt>>
const_iterator _M_lower_bound_tr (const _Kt &__k) const
 
template<typename _Compare2 >
void _M_merge_equal (_Compatible_tree< _Compare2 > &__src) noexcept
 
template<typename _Compare2 >
void _M_merge_unique (_Compatible_tree< _Compare2 > &__src) noexcept
 
iterator _M_reinsert_node_equal (node_type &&__nh)
 
iterator _M_reinsert_node_hint_equal (const_iterator __hint, node_type &&__nh)
 
iterator _M_reinsert_node_hint_unique (const_iterator __hint, node_type &&__nh)
 
insert_return_type _M_reinsert_node_unique (node_type &&__nh)
 
template<typename _Kt , typename _Req = __has_is_transparent_t<_Compare, _Kt>>
iterator _M_upper_bound_tr (const _Kt &__k)
 
template<typename _Kt , typename _Req = __has_is_transparent_t<_Compare, _Kt>>
const_iterator _M_upper_bound_tr (const _Kt &__k) const
 
const_iterator begin () const noexcept
 
iterator begin () noexcept
 
void clear () noexcept
 
size_type count (const key_type &__k) const
 
bool empty () const noexcept
 
const_iterator end () const noexcept
 
iterator end () noexcept
 
pair< iterator, iterator > equal_range (const key_type &__k)
 
pair< const_iterator, const_iterator > equal_range (const key_type &__k) const
 
size_type erase (const key_type &__x)
 
_GLIBCXX_ABI_TAG_CXX11 iterator erase (const_iterator __first, const_iterator __last)
 
_GLIBCXX_ABI_TAG_CXX11 iterator erase (const_iterator __position)
 
_GLIBCXX_ABI_TAG_CXX11 iterator erase (iterator __position)
 
node_type extract (const key_type &__k)
 
node_type extract (const_iterator __pos)
 
iterator find (const key_type &__k)
 
const_iterator find (const key_type &__k) const
 
allocator_type get_allocator () const noexcept
 
_Compare key_comp () const
 
iterator lower_bound (const key_type &__k)
 
const_iterator lower_bound (const key_type &__k) const
 
size_type max_size () const noexcept
 
const_reverse_iterator rbegin () const noexcept
 
reverse_iterator rbegin () noexcept
 
const_reverse_iterator rend () const noexcept
 
reverse_iterator rend () noexcept
 
size_type size () const noexcept
 
void swap (_Rb_tree &__t) noexcept(/*conditional */)
 
iterator upper_bound (const key_type &__k)
 
const_iterator upper_bound (const key_type &__k) const
 

Protected Types

typedef _Rb_tree_node_base * _Base_ptr
 
typedef const _Rb_tree_node_base * _Const_Base_ptr
 
typedef const _Rb_tree_node< _Val > * _Const_Link_type
 
typedef _Rb_tree_node< _Val > * _Link_type
 

Protected Member Functions

_Const_Link_type _M_begin () const noexcept
 
_Link_type _M_begin () noexcept
 
template<bool _MoveValue, typename _NodeGen >
_Link_type _M_clone_node (_Link_type __x, _NodeGen &__node_gen)
 
template<typename... _Args>
void _M_construct_node (_Link_type __node, _Args &&... __args)
 
template<typename... _Args>
_Link_type _M_create_node (_Args &&... __args)
 
void _M_destroy_node (_Link_type __p) noexcept
 
void _M_drop_node (_Link_type __p) noexcept
 
_Const_Base_ptr _M_end () const noexcept
 
_Base_ptr _M_end () noexcept
 
_Link_type _M_get_node ()
 
_Const_Base_ptr _M_leftmost () const noexcept
 
_Base_ptr & _M_leftmost () noexcept
 
_Link_type _M_mbegin () const noexcept
 
void _M_put_node (_Link_type __p) noexcept
 
_Const_Base_ptr _M_rightmost () const noexcept
 
_Base_ptr & _M_rightmost () noexcept
 
_Const_Base_ptr _M_root () const noexcept
 
_Base_ptr & _M_root () noexcept
 

Static Protected Member Functions

static const _Key & _S_key (_Const_Base_ptr __x)
 
static const _Key & _S_key (_Const_Link_type __x)
 
static _Link_type _S_left (_Base_ptr __x) noexcept
 
static _Const_Link_type _S_left (_Const_Base_ptr __x) noexcept
 
static _Base_ptr _S_maximum (_Base_ptr __x) noexcept
 
static _Const_Base_ptr _S_maximum (_Const_Base_ptr __x) noexcept
 
static _Base_ptr _S_minimum (_Base_ptr __x) noexcept
 
static _Const_Base_ptr _S_minimum (_Const_Base_ptr __x) noexcept
 
static _Link_type _S_right (_Base_ptr __x) noexcept
 
static _Const_Link_type _S_right (_Const_Base_ptr __x) noexcept
 

Protected Attributes

_Rb_tree_impl< _Compare > _M_impl
 

Detailed Description

template<class _Key, class _Value, class _KeyOfValue, class _Compare, class _Alloc = std::allocator<_Value>>
struct __gnu_cxx::rb_tree< _Key, _Value, _KeyOfValue, _Compare, _Alloc >

This is an SGI extension.

Todo:
Needs documentation! See http://gcc.gnu.org/onlinedocs/libstdc++/manual/documentation_style.html

Definition at line 77 of file rb_tree.

Member Function Documentation

◆ _M_merge_equal()

template<typename _Key , typename _Val , typename _KeyOfValue , typename _Compare , typename _Alloc = allocator<_Val>>
template<typename _Compare2 >
void std::_Rb_tree< _Key, _Val, _KeyOfValue, _Compare, _Alloc >::_M_merge_equal ( _Compatible_tree< _Compare2 > &  __src)
inlinenoexceptinherited

Merge from a compatible container into one with equivalent keys.

Definition at line 1583 of file stl_tree.h.

◆ _M_merge_unique()

template<typename _Key , typename _Val , typename _KeyOfValue , typename _Compare , typename _Alloc = allocator<_Val>>
template<typename _Compare2 >
void std::_Rb_tree< _Key, _Val, _KeyOfValue, _Compare, _Alloc >::_M_merge_unique ( _Compatible_tree< _Compare2 > &  __src)
inlinenoexceptinherited

Merge from a compatible container into one with unique keys.

Definition at line 1561 of file stl_tree.h.

◆ _M_reinsert_node_equal()

template<typename _Key , typename _Val , typename _KeyOfValue , typename _Compare , typename _Alloc = allocator<_Val>>
iterator std::_Rb_tree< _Key, _Val, _KeyOfValue, _Compare, _Alloc >::_M_reinsert_node_equal ( node_type &&  __nh)
inlineinherited

Re-insert an extracted node.

Definition at line 1470 of file stl_tree.h.

◆ _M_reinsert_node_hint_equal()

template<typename _Key , typename _Val , typename _KeyOfValue , typename _Compare , typename _Alloc = allocator<_Val>>
iterator std::_Rb_tree< _Key, _Val, _KeyOfValue, _Compare, _Alloc >::_M_reinsert_node_hint_equal ( const_iterator  __hint,
node_type &&  __nh 
)
inlineinherited

Re-insert an extracted node.

Definition at line 1512 of file stl_tree.h.

◆ _M_reinsert_node_hint_unique()

template<typename _Key , typename _Val , typename _KeyOfValue , typename _Compare , typename _Alloc = allocator<_Val>>
iterator std::_Rb_tree< _Key, _Val, _KeyOfValue, _Compare, _Alloc >::_M_reinsert_node_hint_unique ( const_iterator  __hint,
node_type &&  __nh 
)
inlineinherited

Re-insert an extracted node.

Definition at line 1490 of file stl_tree.h.

◆ _M_reinsert_node_unique()

template<typename _Key , typename _Val , typename _KeyOfValue , typename _Compare , typename _Alloc = allocator<_Val>>
insert_return_type std::_Rb_tree< _Key, _Val, _KeyOfValue, _Compare, _Alloc >::_M_reinsert_node_unique ( node_type &&  __nh)
inlineinherited

Re-insert an extracted node.

Definition at line 1441 of file stl_tree.h.

◆ extract() [1/2]

template<typename _Key , typename _Val , typename _KeyOfValue , typename _Compare , typename _Alloc = allocator<_Val>>
node_type std::_Rb_tree< _Key, _Val, _KeyOfValue, _Compare, _Alloc >::extract ( const key_type &  __k)
inlineinherited

Extract a node.

Definition at line 1542 of file stl_tree.h.

◆ extract() [2/2]

template<typename _Key , typename _Val , typename _KeyOfValue , typename _Compare , typename _Alloc = allocator<_Val>>
node_type std::_Rb_tree< _Key, _Val, _KeyOfValue, _Compare, _Alloc >::extract ( const_iterator  __pos)
inlineinherited

Extract a node.

Definition at line 1532 of file stl_tree.h.


The documentation for this struct was generated from the following file: