45 erase(key_const_reference r_key)
47 PB_DS_ASSERT_VALID((*
this))
48 return erase_in_pos_imp(r_key, ranged_hash_fn_base::operator()(r_key));
54 erase_in_pos_imp(key_const_reference r_key, size_type pos)
56 PB_DS_ASSERT_VALID((*
this))
57 entry_pointer p_e = m_entries[pos];
58 resize_base::notify_erase_search_start();
61 resize_base::notify_erase_search_end();
62 PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key)
63 PB_DS_ASSERT_VALID((*this))
67 if (hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), r_key))
69 resize_base::notify_erase_search_end();
70 PB_DS_CHECK_KEY_EXISTS(r_key)
71 erase_entry_pointer(m_entries[pos]);
72 do_resize_if_needed_no_throw();
73 PB_DS_ASSERT_VALID((*this))
79 entry_pointer p_next_e = p_e->m_p_next;
82 resize_base::notify_erase_search_end();
83 PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key)
84 PB_DS_ASSERT_VALID((*this))
88 if (hash_eq_fn_base::operator()(PB_DS_V2F(p_next_e->m_value), r_key))
90 resize_base::notify_erase_search_end();
91 PB_DS_CHECK_KEY_EXISTS(r_key)
92 erase_entry_pointer(p_e->m_p_next);
93 do_resize_if_needed_no_throw();
94 PB_DS_ASSERT_VALID((*this))
97 resize_base::notify_erase_search_collision();