41 #ifdef PB_DS_CLASS_C_DEC
46 join_prep(PB_DS_CLASS_C_DEC& other)
48 PB_DS_ASSERT_VALID((*
this))
49 PB_DS_ASSERT_VALID(other)
50 if (other.m_size == 0)
60 Cmp_Fn::operator()(PB_DS_V2F(m_p_head->m_p_right->m_value),
61 PB_DS_V2F(other.m_p_head->m_p_left->m_value));
64 Cmp_Fn::operator()(PB_DS_V2F(other.m_p_head->m_p_right->m_value),
65 PB_DS_V2F(m_p_head->m_p_left->m_value));
67 if (!greater && !lesser)
73 m_size += other.m_size;
74 _GLIBCXX_DEBUG_ONLY(debug_base::join(other);)
81 join_finish(PB_DS_CLASS_C_DEC& other)
90 split_prep(key_const_reference r_key, PB_DS_CLASS_C_DEC& other)
92 PB_DS_ASSERT_VALID((*
this))
93 PB_DS_ASSERT_VALID(other)
98 PB_DS_ASSERT_VALID((*
this))
99 PB_DS_ASSERT_VALID(other)
103 if (Cmp_Fn::operator()(r_key, PB_DS_V2F(m_p_head->m_p_left->m_value)))
106 PB_DS_ASSERT_VALID((*
this))
107 PB_DS_ASSERT_VALID(other)
111 if (!Cmp_Fn::operator()(r_key, PB_DS_V2F(m_p_head->m_p_right->m_value)))
113 PB_DS_ASSERT_VALID((*
this))
114 PB_DS_ASSERT_VALID(other)
121 PB_DS_ASSERT_VALID((*
this))
122 PB_DS_ASSERT_VALID(other)
126 _GLIBCXX_DEBUG_ONLY(debug_base::split(r_key,(Cmp_Fn& )(*this), other);)
133 split_finish(PB_DS_CLASS_C_DEC& other)
135 other.initialize_min_max();
137 m_size -= other.m_size;
138 initialize_min_max();
139 PB_DS_ASSERT_VALID((*
this))
140 PB_DS_ASSERT_VALID(other)
144 typename PB_DS_CLASS_C_DEC::size_type
146 recursive_count(node_pointer p)
const
150 return 1 + recursive_count(p->m_p_left) + recursive_count(p->m_p_right);
constexpr iterator_traits< _InputIterator >::difference_type distance(_InputIterator __first, _InputIterator __last)
A generalization of pointer arithmetic.