GNU g++  v5.2.1
GNU Standard C++
__gnu_pbds::hash_load_check_resize_trigger< External_Load_Access, Size_Type > Class Template Reference

A resize trigger policy based on a load check. More...

#include <hash_policy.hpp>

Inheritance diagram for __gnu_pbds::hash_load_check_resize_trigger< External_Load_Access, Size_Type >:
Collaboration diagram for __gnu_pbds::hash_load_check_resize_trigger< External_Load_Access, Size_Type >:

Public Types

enum  { external_load_access = External_Load_Access }
 
typedef Size_Type size_type
 

Public Member Functions

 hash_load_check_resize_trigger (float load_min=0.125, float load_max=0.5)
 Default constructor, or constructor taking load_min and load_max load factors between which this policy will keep the actual load. More...
 
virtual ~hash_load_check_resize_trigger ()
 
std::pair< float, float > get_loads () const
 Returns a pair of the minimal and maximal loads, respectively. More...
 
void set_loads (std::pair< float, float > load_pair)
 Sets the loads through a pair of the minimal and maximal loads, respectively. More...
 
void swap (hash_load_check_resize_trigger &other)
 

Protected Member Functions

bool is_grow_needed (size_type size, size_type num_entries) const
 
bool is_resize_needed () const
 
void notify_cleared ()
 Notifies the table was cleared. More...
 
void notify_erase_search_collision ()
 
void notify_erase_search_end ()
 
void notify_erase_search_start ()
 
void notify_erased (size_type num_entries)
 
void notify_externally_resized (size_type new_size)
 
void notify_find_search_collision ()
 
void notify_find_search_end ()
 
void notify_find_search_start ()
 
void notify_insert_search_collision ()
 
void notify_insert_search_end ()
 
void notify_insert_search_start ()
 
void notify_inserted (size_type num_entries)
 Notifies an element was inserted. More...
 
void notify_resized (size_type new_size)
 Notifies the table was resized as a result of this object's signifying that a resize is needed. More...
 

Private Types

typedef detail::hash_load_check_resize_trigger_size_base< Size_Type, External_Load_Access > size_base
 

Private Member Functions

virtual void do_resize (size_type new_size)
 

Private Attributes

float m_load_max
 
float m_load_min
 
size_type m_next_grow_size
 
size_type m_next_shrink_size
 
bool m_resize_needed
 

Detailed Description

template<bool External_Load_Access = false, typename Size_Type = std::size_t>
class __gnu_pbds::hash_load_check_resize_trigger< External_Load_Access, Size_Type >

A resize trigger policy based on a load check.

It keeps the load factor between some load factors load_min and load_max.

Member Typedef Documentation

template<bool External_Load_Access = false, typename Size_Type = std::size_t>
typedef detail::hash_load_check_resize_trigger_size_base<Size_Type, External_Load_Access> __gnu_pbds::hash_load_check_resize_trigger< External_Load_Access, Size_Type >::size_base
private
template<bool External_Load_Access = false, typename Size_Type = std::size_t>
typedef Size_Type __gnu_pbds::hash_load_check_resize_trigger< External_Load_Access, Size_Type >::size_type

Member Enumeration Documentation

template<bool External_Load_Access = false, typename Size_Type = std::size_t>
anonymous enum
Enumerator
external_load_access 

Specifies whether the load factor can be accessed externally.

The two options have different trade-offs in terms of flexibility, genericity, and encapsulation.

Constructor & Destructor Documentation

template<bool External_Load_Access = false, typename Size_Type = std::size_t>
__gnu_pbds::hash_load_check_resize_trigger< External_Load_Access, Size_Type >::hash_load_check_resize_trigger ( float  load_min = 0.125,
float  load_max = 0.5 
)

Default constructor, or constructor taking load_min and load_max load factors between which this policy will keep the actual load.

template<bool External_Load_Access = false, typename Size_Type = std::size_t>
virtual __gnu_pbds::hash_load_check_resize_trigger< External_Load_Access, Size_Type >::~hash_load_check_resize_trigger ( )
virtual

Member Function Documentation

template<bool External_Load_Access = false, typename Size_Type = std::size_t>
virtual void __gnu_pbds::hash_load_check_resize_trigger< External_Load_Access, Size_Type >::do_resize ( size_type  new_size)
privatevirtual
template<bool External_Load_Access = false, typename Size_Type = std::size_t>
std::pair<float, float> __gnu_pbds::hash_load_check_resize_trigger< External_Load_Access, Size_Type >::get_loads ( ) const
inline

Returns a pair of the minimal and maximal loads, respectively.

template<bool External_Load_Access = false, typename Size_Type = std::size_t>
bool __gnu_pbds::hash_load_check_resize_trigger< External_Load_Access, Size_Type >::is_grow_needed ( size_type  size,
size_type  num_entries 
) const
inlineprotected
template<bool External_Load_Access = false, typename Size_Type = std::size_t>
bool __gnu_pbds::hash_load_check_resize_trigger< External_Load_Access, Size_Type >::is_resize_needed ( ) const
inlineprotected
template<bool External_Load_Access = false, typename Size_Type = std::size_t>
void __gnu_pbds::hash_load_check_resize_trigger< External_Load_Access, Size_Type >::notify_cleared ( )
protected

Notifies the table was cleared.

template<bool External_Load_Access = false, typename Size_Type = std::size_t>
void __gnu_pbds::hash_load_check_resize_trigger< External_Load_Access, Size_Type >::notify_erase_search_collision ( )
inlineprotected
template<bool External_Load_Access = false, typename Size_Type = std::size_t>
void __gnu_pbds::hash_load_check_resize_trigger< External_Load_Access, Size_Type >::notify_erase_search_end ( )
inlineprotected
template<bool External_Load_Access = false, typename Size_Type = std::size_t>
void __gnu_pbds::hash_load_check_resize_trigger< External_Load_Access, Size_Type >::notify_erase_search_start ( )
inlineprotected
template<bool External_Load_Access = false, typename Size_Type = std::size_t>
void __gnu_pbds::hash_load_check_resize_trigger< External_Load_Access, Size_Type >::notify_erased ( size_type  num_entries)
inlineprotected
template<bool External_Load_Access = false, typename Size_Type = std::size_t>
void __gnu_pbds::hash_load_check_resize_trigger< External_Load_Access, Size_Type >::notify_externally_resized ( size_type  new_size)
protected
template<bool External_Load_Access = false, typename Size_Type = std::size_t>
void __gnu_pbds::hash_load_check_resize_trigger< External_Load_Access, Size_Type >::notify_find_search_collision ( )
inlineprotected
template<bool External_Load_Access = false, typename Size_Type = std::size_t>
void __gnu_pbds::hash_load_check_resize_trigger< External_Load_Access, Size_Type >::notify_find_search_end ( )
inlineprotected
template<bool External_Load_Access = false, typename Size_Type = std::size_t>
void __gnu_pbds::hash_load_check_resize_trigger< External_Load_Access, Size_Type >::notify_find_search_start ( )
inlineprotected
template<bool External_Load_Access = false, typename Size_Type = std::size_t>
void __gnu_pbds::hash_load_check_resize_trigger< External_Load_Access, Size_Type >::notify_insert_search_collision ( )
inlineprotected
template<bool External_Load_Access = false, typename Size_Type = std::size_t>
void __gnu_pbds::hash_load_check_resize_trigger< External_Load_Access, Size_Type >::notify_insert_search_end ( )
inlineprotected
template<bool External_Load_Access = false, typename Size_Type = std::size_t>
void __gnu_pbds::hash_load_check_resize_trigger< External_Load_Access, Size_Type >::notify_insert_search_start ( )
inlineprotected
template<bool External_Load_Access = false, typename Size_Type = std::size_t>
void __gnu_pbds::hash_load_check_resize_trigger< External_Load_Access, Size_Type >::notify_inserted ( size_type  num_entries)
inlineprotected

Notifies an element was inserted.

The total number of entries in the table is num_entries.

template<bool External_Load_Access = false, typename Size_Type = std::size_t>
void __gnu_pbds::hash_load_check_resize_trigger< External_Load_Access, Size_Type >::notify_resized ( size_type  new_size)
protected

Notifies the table was resized as a result of this object's signifying that a resize is needed.

template<bool External_Load_Access = false, typename Size_Type = std::size_t>
void __gnu_pbds::hash_load_check_resize_trigger< External_Load_Access, Size_Type >::set_loads ( std::pair< float, float >  load_pair)

Sets the loads through a pair of the minimal and maximal loads, respectively.

template<bool External_Load_Access = false, typename Size_Type = std::size_t>
void __gnu_pbds::hash_load_check_resize_trigger< External_Load_Access, Size_Type >::swap ( hash_load_check_resize_trigger< External_Load_Access, Size_Type > &  other)

Member Data Documentation

template<bool External_Load_Access = false, typename Size_Type = std::size_t>
float __gnu_pbds::hash_load_check_resize_trigger< External_Load_Access, Size_Type >::m_load_max
private
template<bool External_Load_Access = false, typename Size_Type = std::size_t>
float __gnu_pbds::hash_load_check_resize_trigger< External_Load_Access, Size_Type >::m_load_min
private
template<bool External_Load_Access = false, typename Size_Type = std::size_t>
size_type __gnu_pbds::hash_load_check_resize_trigger< External_Load_Access, Size_Type >::m_next_grow_size
private
template<bool External_Load_Access = false, typename Size_Type = std::size_t>
size_type __gnu_pbds::hash_load_check_resize_trigger< External_Load_Access, Size_Type >::m_next_shrink_size
private
template<bool External_Load_Access = false, typename Size_Type = std::size_t>
bool __gnu_pbds::hash_load_check_resize_trigger< External_Load_Access, Size_Type >::m_resize_needed
private

The documentation for this class was generated from the following file: