# `trie_prefix_search_node_update` Interface

A node updater that allows tries to be searched for the range of values that match a certain prefix.

Defined in: `trie_policy.hpp`

## Template Parameters

Parameter | Description | Default Value
    class Const_Node_Iterator
| Const node iterator type. | -
    class Node_Iterator
| Node iterator type. | -
    class E_Access_Traits
| Comparison functor. | -
    class Allocator
| Allocator type. | -

## Public Types and Constants

### Key-Type Definitions

Type | Definition | Description
    key_type
    The instantiating container's key type.
| Key type.
    const_key_reference
    The instantiating container's const key reference type.
| Const key reference.

### Policy Definitions

Type | Definition | Description
    e_access_traits
    E_Access_Traits
| Element access traits.
    const_e_iterator
    typename e_access_traits::const_iterator
| Const element iterator.
    allocator
    Allocator
| `Allocator` type.

### General Definitions

Type | Definition | Description
    size_type
    typename allocator::size_type
| Size type.

### Metadata-Type Definitions

Type | Definition | Description
    metadata_type
    __gnu_pbds::detail::null_node_metadata
| Metadata type.

### Iterator Definitions

Type | Definition | Description
    const_node_iterator
    Const_Node_Iterator
| Const node iterator type.
    node_iterator
    Node_Iterator
| Node iterator type.
    const_iterator
    typename const_node_iterator::value_type
| Const iterator type.
    iterator
    typename node_iterator::value_type
| Iterator type.

## Public Methods

### Find Methods

Method | Description
    std::pair<
        const_iterator,
        const_iterator>
      prefix_range
      (const_key_reference r_key) const
| Finds the `const` `iterator` range corresponding to all values whose prefixes match `r_key`.
    std::pair<
        iterator,
        iterator>
      prefix_range
      (const_key_reference r_key)
| Finds the `iterator` range corresponding to all values whose prefixes match `r_key`.
    std::pair<
        const_iterator,
        const_iterator>
      prefix_range
      (const_e_iterator b,
        const_e_iterator e) const
| Finds the `const` `iterator` range corresponding to all values whose prefixes match [b, `e`).
    std::pair<
        iterator,
        iterator>
      prefix_range
      (const_e_iterator b,
        const_e_iterator e)
| Finds the `iterator` range corresponding to all values whose prefixes match [b, `e`).

## Protected Methods

### Operators

Method | Description
    inline void
      operator()
      (node_iterator node_it,
        const_node_iterator end_nd_it) const
| Called to update a node's metadata.

## Private Methods

### Overrides

Method | Description
    virtual const_iterator
      end
      () const = 0
| Returns the `const` `iterator` associated with the just-after last element.
    virtual iterator
      end
      () = 0
| Returns the `iterator` associated with the just-after last element.
    virtual const_node_iterator
      node_begin
      () const = 0
| Returns the `const_node_iterator` associated with the trie's root node.
    virtual node_iterator
      node_begin
      () = 0
| Returns the `node_iterator` associated with the trie's root node.
    virtual const_node_iterator
      node_end
      () const = 0
| Returns the `const_node_iterator` associated with a just-after leaf node.
    virtual node_iterator
      node_end
      () = 0
| Returns the `node_iterator` associated with a just-after leaf node.
    virtual const e_access_traits &
      get_e_access_traits
      () const = 0
| Access to the cmp_fn object.