51 #define PB_DS_CLASS_T_DEC \
52 template<typename Key, typename Mapped, typename Cmp_Fn, \
53 typename Node_And_It_Traits, typename _Alloc>
55 #ifdef PB_DS_DATA_TRUE_INDICATOR
56 # define PB_DS_RB_TREE_NAME rb_tree_map
57 # define PB_DS_RB_TREE_BASE_NAME bin_search_tree_map
60 #ifdef PB_DS_DATA_FALSE_INDICATOR
61 # define PB_DS_RB_TREE_NAME rb_tree_set
62 # define PB_DS_RB_TREE_BASE_NAME bin_search_tree_set
65 #define PB_DS_CLASS_C_DEC \
66 PB_DS_RB_TREE_NAME<Key, Mapped, Cmp_Fn, Node_And_It_Traits, _Alloc>
68 #define PB_DS_RB_TREE_BASE \
69 PB_DS_RB_TREE_BASE_NAME<Key, Mapped, Cmp_Fn, Node_And_It_Traits, _Alloc>
79 template<
typename Key,
82 typename Node_And_It_Traits,
130 template<
typename It>
134 inline std::pair<point_iterator, bool>
140 #ifdef PB_DS_DATA_TRUE_INDICATOR
142 std::pair<point_iterator, bool> ins_pair =
145 if (ins_pair.second ==
true)
147 ins_pair.first.m_p_nd->m_red =
true;
152 return ins_pair.first.m_p_nd->m_value.second;
155 return base_type::s_null_type;
168 template<
typename Pred>
180 #ifdef _GLIBCXX_DEBUG
182 assert_valid(
const char*,
int)
const;
185 assert_node_consistent(
const node_pointer,
const char*,
int)
const;
212 std::pair<node_pointer, node_pointer>
218 std::pair<node_pointer, node_pointer>
221 std::pair<node_pointer, node_pointer>
231 #define PB_DS_STRUCT_ONLY_ASSERT_VALID(X) \
232 _GLIBCXX_DEBUG_ONLY(X.structure_only_assert_valid(__FILE__, __LINE__);)
241 #undef PB_DS_STRUCT_ONLY_ASSERT_VALID
242 #undef PB_DS_CLASS_T_DEC
243 #undef PB_DS_CLASS_C_DEC
244 #undef PB_DS_RB_TREE_NAME
245 #undef PB_DS_RB_TREE_BASE_NAME
246 #undef PB_DS_RB_TREE_BASE
PB_DS_RB_TREE_BASE base_type
Definition: rb_tree_.hpp:87
void join_imp(node_pointer, node_pointer)
base_type::node_update node_update
Definition: rb_tree_.hpp:117
static bool is_effectively_black(const node_pointer)
base_type::key_const_reference key_const_reference
Definition: rb_tree_.hpp:100
base_type::iterator iterator
Definition: rb_tree_.hpp:113
void split_at_node(node_pointer, PB_DS_CLASS_C_DEC &)
rb_tree_tag container_category
Definition: rb_tree_.hpp:91
_Alloc::difference_type difference_type
Definition: rb_tree_.hpp:95
base_type::mapped_type mapped_type
Definition: rb_tree_.hpp:101
base_type::reference reference
Definition: rb_tree_.hpp:109
void insert_fixup(node_pointer)
#define _GLIBCXX_DEBUG_ONLY(_Statement)
Definition: debug.h:63
base_type::mapped_pointer mapped_pointer
Definition: rb_tree_.hpp:102
Red-black tree.
Definition: tag_and_trait.hpp:153
base_type::const_iterator point_const_iterator
Definition: rb_tree_.hpp:112
base_type::mapped_const_pointer mapped_const_pointer
Definition: rb_tree_.hpp:103
_Alloc allocator_type
Definition: rb_tree_.hpp:93
base_type::mapped_reference mapped_reference
Definition: rb_tree_.hpp:104
void split(key_const_reference, PB_DS_CLASS_C_DEC &)
base_type::node_pointer node_pointer
Definition: rb_tree_.hpp:88
base_type::pointer pointer
Definition: rb_tree_.hpp:107
void remove_node(node_pointer)
base_type::value_type value_type
Definition: rb_tree_.hpp:106
Cmp_Fn cmp_fn
Definition: rb_tree_.hpp:92
bool erase(key_const_reference)
base_type::key_reference key_reference
Definition: rb_tree_.hpp:99
base_type::const_iterator const_iterator
Definition: rb_tree_.hpp:114
#define PB_DS_CLASS_C_DEC
Definition: rb_tree_.hpp:65
std::pair< node_pointer, node_pointer > split_min_imp()
std::pair< node_pointer, node_pointer > find_join_pos_right(node_pointer, size_type, size_type)
base_type::const_reference const_reference
Definition: rb_tree_.hpp:110
void split_imp(node_pointer, PB_DS_CLASS_C_DEC &)
base_type::key_const_pointer key_const_pointer
Definition: rb_tree_.hpp:98
base_type::key_pointer key_pointer
Definition: rb_tree_.hpp:97
mapped_reference operator[](key_const_reference r_key)
Definition: rb_tree_.hpp:138
base_type::const_pointer const_pointer
Definition: rb_tree_.hpp:108
void join(PB_DS_CLASS_C_DEC &)
std::pair< point_iterator, bool > insert(const_reference)
base_type::reverse_iterator reverse_iterator
Definition: rb_tree_.hpp:115
base_type::point_iterator point_iterator
Definition: rb_tree_.hpp:111
_Alloc::size_type size_type
Definition: rb_tree_.hpp:94
Red-Black tree.This implementation uses an idea from the SGI STL (using a header node which is needed...
Definition: rb_tree_.hpp:84
void erase_node(node_pointer)
void swap(PB_DS_CLASS_C_DEC &)
void copy_from_range(It, It)
base_type::const_reverse_iterator const_reverse_iterator
Definition: rb_tree_.hpp:116
size_type black_height(node_pointer)
#define PB_DS_RB_TREE_BASE
Definition: rb_tree_.hpp:68
void remove_fixup(node_pointer, node_pointer)
base_type::key_type key_type
Definition: rb_tree_.hpp:96
base_type::mapped_const_reference mapped_const_reference
Definition: rb_tree_.hpp:105
std::pair< node_pointer, node_pointer > find_join_pos_left(node_pointer, size_type, size_type)