44 join_prep(PB_DS_CLASS_C_DEC& other)
46 PB_DS_ASSERT_VALID((*
this))
47 PB_DS_ASSERT_VALID(other)
48 if (other.m_size == 0)
58 Cmp_Fn::operator()(PB_DS_V2F(m_p_head->m_p_right->m_value),
59 PB_DS_V2F(other.m_p_head->m_p_left->m_value));
62 Cmp_Fn::operator()(PB_DS_V2F(other.m_p_head->m_p_right->m_value),
63 PB_DS_V2F(m_p_head->m_p_left->m_value));
65 if (!greater && !lesser)
71 m_size += other.m_size;
72 _GLIBCXX_DEBUG_ONLY(debug_base::join(other);)
79 join_finish(PB_DS_CLASS_C_DEC& other)
88 split_prep(key_const_reference r_key, PB_DS_CLASS_C_DEC& other)
90 PB_DS_ASSERT_VALID((*
this))
91 PB_DS_ASSERT_VALID(other)
96 PB_DS_ASSERT_VALID((*
this))
97 PB_DS_ASSERT_VALID(other)
101 if (Cmp_Fn::operator()(r_key, PB_DS_V2F(m_p_head->m_p_left->m_value)))
104 PB_DS_ASSERT_VALID((*
this))
105 PB_DS_ASSERT_VALID(other)
109 if (!Cmp_Fn::operator()(r_key, PB_DS_V2F(m_p_head->m_p_right->m_value)))
111 PB_DS_ASSERT_VALID((*
this))
112 PB_DS_ASSERT_VALID(other)
119 PB_DS_ASSERT_VALID((*
this))
120 PB_DS_ASSERT_VALID(other)
124 _GLIBCXX_DEBUG_ONLY(debug_base::split(r_key,(Cmp_Fn& )(*this), other);)
131 split_finish(PB_DS_CLASS_C_DEC& other)
133 other.initialize_min_max();
135 m_size -= other.m_size;
136 initialize_min_max();
137 PB_DS_ASSERT_VALID((*
this))
138 PB_DS_ASSERT_VALID(other)
142 typename PB_DS_CLASS_C_DEC::size_type
144 recursive_count(node_pointer p)
const 148 return 1 + recursive_count(p->m_p_left) + recursive_count(p->m_p_right);
_GLIBCXX17_CONSTEXPR iterator_traits< _InputIterator >::difference_type distance(_InputIterator __first, _InputIterator __last)
A generalization of pointer arithmetic.