41 #ifdef PB_DS_CLASS_C_DEC
46 erase(key_const_reference r_key)
48 PB_DS_ASSERT_VALID((*
this))
52 if (s_eq_fn(r_key, PB_DS_V2F(m_p_l->m_value)))
54 entry_pointer p_next = m_p_l->m_p_next;
55 actual_erase_entry(m_p_l);
60 entry_pointer p_l = m_p_l;
61 while (p_l->m_p_next != 0)
62 if (s_eq_fn(r_key, PB_DS_V2F(p_l->m_p_next->m_value)))
81 template<
typename Pred>
82 inline typename PB_DS_CLASS_C_DEC::size_type
86 PB_DS_ASSERT_VALID((*
this))
87 size_type num_ersd = 0;
88 while (m_p_l != 0 && pred(m_p_l->m_value))
90 entry_pointer p_next = m_p_l->m_p_next;
92 actual_erase_entry(m_p_l);
99 entry_pointer p_l = m_p_l;
100 while (p_l->m_p_next != 0)
102 if (pred(p_l->m_p_next->m_value))
111 PB_DS_ASSERT_VALID((*
this))
118 erase_next(entry_pointer p_l)
120 _GLIBCXX_DEBUG_ASSERT(p_l != 0);
121 _GLIBCXX_DEBUG_ASSERT(p_l->m_p_next != 0);
122 entry_pointer p_next_l = p_l->m_p_next->m_p_next;
123 actual_erase_entry(p_l->m_p_next);
124 p_l->m_p_next = p_next_l;
130 actual_erase_entry(entry_pointer p_l)
132 _GLIBCXX_DEBUG_ONLY(debug_base::erase_existing(PB_DS_V2F(p_l->m_value));)
134 s_entry_allocator.deallocate(p_l, 1);