43hash_standard_resize_policy()
44: m_size(Size_Policy::get_nearest_larger_size(1))
45{ trigger_policy_base::notify_externally_resized(m_size); }
49hash_standard_resize_policy(
const Size_Policy& r_size_policy)
50: Size_Policy(r_size_policy), m_size(Size_Policy::get_nearest_larger_size(1))
51{ trigger_policy_base::notify_externally_resized(m_size); }
55hash_standard_resize_policy(
const Size_Policy& r_size_policy,
56 const Trigger_Policy& r_trigger_policy)
57: Size_Policy(r_size_policy), Trigger_Policy(r_trigger_policy),
58 m_size(Size_Policy::get_nearest_larger_size(1))
59{ trigger_policy_base::notify_externally_resized(m_size); }
63~hash_standard_resize_policy()
69swap(PB_DS_CLASS_C_DEC& other)
71 trigger_policy_base::swap(other);
72 size_policy_base::swap(other);
73 std::swap(m_size, other.m_size);
79notify_find_search_start()
80{ trigger_policy_base::notify_find_search_start(); }
85notify_find_search_collision()
86{ trigger_policy_base::notify_find_search_collision(); }
91notify_find_search_end()
92{ trigger_policy_base::notify_find_search_end(); }
97notify_insert_search_start()
98{ trigger_policy_base::notify_insert_search_start(); }
103notify_insert_search_collision()
104{ trigger_policy_base::notify_insert_search_collision(); }
109notify_insert_search_end()
110{ trigger_policy_base::notify_insert_search_end(); }
115notify_erase_search_start()
116{ trigger_policy_base::notify_erase_search_start(); }
121notify_erase_search_collision()
122{ trigger_policy_base::notify_erase_search_collision(); }
127notify_erase_search_end()
128{ trigger_policy_base::notify_erase_search_end(); }
133notify_inserted(size_type num_e)
134{ trigger_policy_base::notify_inserted(num_e); }
139notify_erased(size_type num_e)
140{ trigger_policy_base::notify_erased(num_e); }
146{ trigger_policy_base::notify_cleared(); }
151is_resize_needed()
const
152{
return trigger_policy_base::is_resize_needed(); }
155typename PB_DS_CLASS_C_DEC::size_type
157get_new_size(size_type size, size_type num_used_e)
const
159 if (trigger_policy_base::is_grow_needed(size, num_used_e))
160 return size_policy_base::get_nearest_larger_size(size);
161 return size_policy_base::get_nearest_smaller_size(size);
167notify_resized(size_type new_size)
169 trigger_policy_base::notify_resized(new_size);
174inline typename PB_DS_CLASS_C_DEC::size_type
176get_actual_size()
const
178 PB_DS_STATIC_ASSERT(access, external_size_access);
185resize(size_type new_size)
187 PB_DS_STATIC_ASSERT(access, external_size_access);
188 size_type actual_size = size_policy_base::get_nearest_larger_size(1);
189 while (actual_size < new_size)
191 const size_type pot = size_policy_base::get_nearest_larger_size(actual_size);
193 if (pot == actual_size && pot < new_size)
194 __throw_resize_error();
201 const size_type old_size = m_size;
204 do_resize(actual_size - 1);
206 __catch(insert_error& )
209 __throw_resize_error();
214 __throw_exception_again;
235get_trigger_policy()
const
247get_size_policy()
const