43 cc_hash_max_collision_check_resize_trigger(
float load) :
48 m_resize_needed(false)
54 notify_find_search_start()
60 notify_find_search_collision()
66 notify_find_search_end()
72 notify_insert_search_start()
78 notify_insert_search_collision()
84 notify_insert_search_end()
85 { calc_resize_needed(); }
90 notify_erase_search_start()
96 notify_erase_search_collision()
102 notify_erase_search_end()
108 notify_inserted(size_type)
114 notify_erased(size_type)
115 { m_resize_needed =
true; }
121 { m_resize_needed =
false; }
126 is_resize_needed()
const
127 {
return m_resize_needed; }
132 is_grow_needed(size_type , size_type )
const
133 {
return m_num_col >= m_max_col; }
138 notify_resized(size_type new_size)
142 #ifdef PB_DS_HT_MAP_RESIZE_TRACE_
143 std::cerr <<
"chmccrt::notify_resized "
144 <<
static_cast<unsigned long>(new_size) << std::endl;
148 calc_resize_needed();
158 const double ln_arg = 2 * m_size * std::log(
double(m_size));
159 m_max_col = size_type(std::ceil(std::sqrt(2 * m_load * std::log(ln_arg))));
161 #ifdef PB_DS_HT_MAP_RESIZE_TRACE_
162 std::cerr <<
"chmccrt::calc_max_num_coll "
163 <<
static_cast<unsigned long>(m_size) <<
" "
164 << static_cast<unsigned long>(m_max_col) << std::endl;
171 notify_externally_resized(size_type new_size)
172 { notify_resized(new_size); }
177 swap(PB_DS_CLASS_C_DEC& other)
183 std::swap(m_resize_needed, other.m_resize_needed);
191 PB_DS_STATIC_ASSERT(access, external_load_access);
199 { m_resize_needed = m_resize_needed || m_num_col >= m_max_col; }
206 PB_DS_STATIC_ASSERT(access, external_load_access);
209 calc_resize_needed();
void swap(_Tp &, _Tp &) noexcept(__and_< is_nothrow_move_constructible< _Tp >, is_nothrow_move_assignable< _Tp >>::value)
Swaps two values.