# `cc_hash_table` Interface

A concrete collision-chaining hash-based associative container.

Defined in: `assoc_container.hpp`

## Template Parameters

Parameter | Description | Default Value
    typename Key
| Key type. | -
    typename Mapped
| Mapped type. | -
    class Hash_Fn
| Hash functor. |
    __gnu_cxx::hash<Key>
if using gcc;
    stdext::hash_value<Key>
if using Visual C++ .net
    class Eq_Fn
| Equivalence functor. |
    std::equal_to<Key>
    class Comb_Hash_Fn
| Combining hash functor. If `Hash_Fn` is not `null_hash_fn`, then this is the ranged-hash functor; otherwise, this is the range-hashing functor. (See Design::Hash-Based Containers::Hash Policies.) |
    direct_mask_range_hashing
    class Resize_Policy
| Resize policy. | If ``Comb_Hash_Fn`` is ``direct_mask_range_hashing``, then
    hash_standard_resize_policy<
      hash_exponential_size_policy<
        typename Comb_Hash_Fn::size_type>,
      hash_load_check_resize_trigger<
        typename Comb_Hash_Fn::size_type>,
      false,
      typename Comb_Hash_Fn::size_type>
otherwise,
    hash_standard_resize_policy<
      hash_exponential_size_policy<
        typename Comb_Hash_Fn::size_type>,
      hash_load_check_resize_trigger<
        typename Comb_Hash_Fn::size_type>,
      false,
      typename Comb_Hash_Fn::size_type>
    bool Store_Hash
| Indicates whether the hash value will be stored along with each key. If ``hash_fn`` is `null_hash_fn`, then the container will not compile if this value is `true` |
    false
    class Allocator
| Allocator type. |
    std::allocator<char>

## Base Classes

Class | Derivation Type
    basic_hash_table
| public

## Public Types and Constants

### Policy Definitions

Type | Definition | Description
    hash_fn
    Hash_Fn
| Hash functor type.
    eq_fn
    Eq_Fn
| Equivalence functor type.
    resize_policy
    Resize_Policy
| Resize policy type.
    comb_hash_fn
    Comb_Hash_Fn
| Combining hash functor type.

## Public Methods

### Constructors, Destructor, and Related

Method | Description
      cc_hash_table
      ()
| Default constructor.
      cc_hash_table
      (const hash_fn &r_hash_fn)
| Constructor taking some policy objects. `r_hash_fn` will be copied by the `Hash_Fn` object of the container object.
      cc_hash_table
      (const hash_fn &r_hash_fn,
        const eq_fn &r_eq_fn)
| Constructor taking some policy objects. `r_hash_fn` will be copied by the `hash_fn` object of the container object, and `r_eq_fn` will be copied by the `eq_fn` object of the container object.
      cc_hash_table
      (const hash_fn &r_hash_fn,
        const eq_fn &r_eq_fn,
        const comb_hash_fn &r_comb_hash_fn)
| Constructor taking some policy objects. `r_hash_fn` will be copied by the `hash_fn` object of the container object, `r_eq_fn` will be copied by the `eq_fn` object of the container object, and `r_comb_hash_fn` will be copied by the `comb_hash_fn` object of the container object.
      cc_hash_table
      (const hash_fn &r_hash_fn,
        const eq_fn &r_eq_fn,
        const comb_hash_fn &r_comb_hash_fn,
        const resize_policy &r_resize_policy)
| Constructor taking some policy objects. `r_hash_fn` will be copied by the `hash_fn` object of the container object, `r_eq_fn` will be copied by the `eq_fn` object of the container object, `r_comb_hash_fn` will be copied by the `comb_hash_fn` object of the container object, and `r_resize_policy` will be copied by the `resize_policy` object of the container object.
    template<
        class It>
      cc_hash_table
      (It first_it,
        It last_it)
| Constructor taking iterators to a range of value_types. The value_types between `first_it` and `last_it` will be inserted into the container object.
    template<
        class It>
      cc_hash_table
      (It first_it,
        It last_it,
        const hash_fn &r_hash_fn)
| Constructor taking iterators to a range of value_types and some policy objects. The value_types between `first_it` and `last_it` will be inserted into the container object.
    template<
        class It>
      cc_hash_table
      (It first_it,
        It last_it,
        const hash_fn &r_hash_fn,
        const eq_fn &r_eq_fn)
| Constructor taking iterators to a range of value_types and some policy objects The value_types between `first_it` and `last_it` will be inserted into the container object. `r_hash_fn` will be copied by the `hash_fn` object of the container object, and `r_eq_fn` will be copied by the `eq_fn` object of the container object.
    template<
        class It>
      cc_hash_table
      (It first_it,
        It last_it,
        const hash_fn &r_hash_fn,
        const eq_fn &r_eq_fn,
        const comb_hash_fn &r_comb_hash_fn)
| Constructor taking iterators to a range of value_types and some policy objects The value_types between `first_it` and `last_it` will be inserted into the container object. `r_hash_fn` will be copied by the `hash_fn` object of the container object, `r_eq_fn` will be copied by the `eq_fn` object of the container object, and `r_comb_hash_fn` will be copied by the `comb_hash_fn` object of the container object.
    template<
        class It>
      cc_hash_table
      (It first_it,
        It last_it,
        const hash_fn &r_hash_fn,
        const eq_fn &r_eq_fn,
        const comb_hash_fn &r_comb_hash_fn,
        const resize_policy &r_resize_policy)
| Constructor taking iterators to a range of value_types and some policy objects The value_types between `first_it` and `last_it` will be inserted into the container object. `r_hash_fn` will be copied by the `hash_fn` object of the container object, `r_eq_fn` will be copied by the `eq_fn` object of the container object, `r_comb_hash_fn` will be copied by the `comb_hash_fn` object of the container object, and `r_resize_policy` will be copied by the `resize_policy` object of the container object.
      cc_hash_table
      (const cc_hash_table &other)
| Copy constructor.
    virtual
      ~cc_hash_table
      ()
| Destructor.
    cc_hash_table &
      operator=
      (const cc_hash_table &other)
| Assignment operator.
    void
      swap
      (cc_hash_table &other)
| Swaps content.

### Policy Access Methods

Method | Description
    comb_hash_fn &
      get_comb_hash_fn
      ()
| Access to the `comb_hash_fn` object.
    const comb_hash_fn &
      get_comb_hash_fn
      () const
| Const access to the `comb_hash_fn` object.