41 #ifdef PB_DS_CLASS_C_DEC
46 erase_entry_pointer(entry_pointer& r_p_e)
48 _GLIBCXX_DEBUG_ONLY(debug_base::erase_existing(PB_DS_V2F(r_p_e->m_value)));
50 entry_pointer p_e = r_p_e;
51 r_p_e = r_p_e->m_p_next;
53 _GLIBCXX_DEBUG_ASSERT(m_num_used_e > 0);
54 resize_base::notify_erased(--m_num_used_e);
58 template<
typename Pred>
59 inline typename PB_DS_CLASS_C_DEC::size_type
63 size_type num_ersd = 0;
64 for (size_type pos = 0; pos < m_num_e; ++pos)
66 while (m_entries[pos] != 0 && pred(m_entries[pos]->m_value))
69 entry_pointer p_next_e = m_entries[pos]->m_p_next;
70 erase_entry_pointer(m_entries[pos]);
71 m_entries[pos] = p_next_e;
74 entry_pointer p_e = m_entries[pos];
75 while (p_e != 0 && p_e->m_p_next != 0)
77 if (pred(p_e->m_p_next->m_value))
80 erase_entry_pointer(p_e->m_p_next);
87 do_resize_if_needed_no_throw();
96 for (size_type pos = 0; pos < m_num_e; ++pos)
97 while (m_entries[pos] != 0)
98 erase_entry_pointer(m_entries[pos]);
99 do_resize_if_needed_no_throw();
100 resize_base::notify_cleared();