# `cc_hash_max_collision_check_resize_trigger` Interface

A resize trigger policy based on collision checks. It keeps the simulated load factor lower than some given load factor.

Defined in: `hash_policy.hpp`

## Template Parameters

Parameter | Description | Default Value

    bool 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.

`false`

    typename Size_Type

Size type.

size_t

## Public Types and Constants

### General Definitions

Type | Definition | Description

    size_type

    Size_Type

Size type.

    external_load_access

    External_Load_Access

Indicates whether loads can be accessed externally

## Public Methods

### Constructors, Destructor, and Related

Method | Description

      cc_hash_max_collision_check_resize_trigger
      (float load = 0.5)

Default constructor, or constructor taking `load`, a load factor which it will attempt to maintain.

    void
      swap
      (cc_hash_max_collision_check_resize_trigger &other)

Swaps content.

### Load Access Methods

These methods are only available if the external access parameter is set.

Method | Description

    inline float
      get_load
      () const

Returns the current load.

Calling this method will not compile when `External_Load_Access` == `false`.

    void
      set_load
      (float load)

Sets the `load`; does not resize the container.

It is the responsibility of the user to pass an appropriate `load` to this function. Calling this method will not compile when `External_Load_Access` == `false`.

## Protected Methods

### Insert Search Notifications.

Notifications called during an insert operation.

Method | Description

    inline void
      notify_insert_search_start
      ()

Notifies a search started.

    inline void
      notify_insert_search_collision
      ()

Notifies a search encountered a collision.

    inline void
      notify_insert_search_end
      ()

Notifies a search ended.

### Find Search Notifications.

Notifications called during a find operation.

Method | Description

    inline void
      notify_find_search_start
      ()

Notifies a search started.

    inline void
      notify_find_search_collision
      ()

Notifies a search encountered a collision.

    inline void
      notify_find_search_end
      ()

Notifies a search ended.

### Erase Search Notifications.

Notifications called during an insert operation.

Method | Description

    inline void
      notify_erase_search_start
      ()

Notifies a search started.

    inline void
      notify_erase_search_collision
      ()

Notifies a search encountered a collision.

    inline void
      notify_erase_search_end
      ()

Notifies a search ended.

### Content Change Notifications

Notifications called when the content of the table changes in a way that can affect the resize policy.

Method | Description

    inline void
      notify_inserted
      (size_type num_entries)

Notifies an element was inserted.

    inline void
      notify_erased
      (size_type num_entries)

Notifies an element was erased.

    void
      notify_cleared
      ()

Notifies the table was cleared.

### Size Change Notifications

Notifications called when the table changes size.

Method | Description

    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.

    void
      notify_externally_resized
      (size_type new_size)

Notifies the table was resized externally.

### Queries

Called to query whether/how to resize.

Method | Description

    inline bool
      is_resize_needed
      () const

Queries whether a resize is needed.

    inline bool
      is_grow_needed
      (size_type size, size_type num_entries) const

Queries whether a grow is needed.

This method is called only if this object indicated is needed.