# ``trie`::const_node_iterator` Interface

Const node iterator.

This is an "iterator to an iterator" - it iterates over nodes, and de-referencing it returns one of the tree's const iterators

## Public Types and Constants

### General Container Definitions

Type | Definition | Description

    size_type

    container_base::size_type

Size type.

### Iterator Definitions

Type | Definition | Description

    iterator_category

    trivial_iterator_tag

Category.

This tag identifies that the iterator has none of the STL's iterators' movement abilities.

    difference_type

    void

Difference type.

### Value-Type Definitions

Type | Definition | Description

    value_type

    container_base::const_iterator

Iterator's value type.

    reference

    value_type

Iterator's reference type.

    const_reference

    value_type

Iterator's const `reference` type.

    e_access_traits

    trie::e_access_traits

Element access traits.

    const_e_iterator

    typename e_access_traits::const_iterator

A key's element const iterator.

### Metadata Definitions

These are only defined if `basic_tree`::Node_Update is not `null_trie_node_update`

Type | Definition | Description

    metadata_type

    typename basic_tree::Node_Update::metadata_type

Metadata type.

    const_metadata_reference

    typename Allocator::template rebind<
        metadata_type>::other::const_reference

Const metadata `reference` type.

## Public Methods

### Constructors, Destructor, and Related

Method | Description

    inline
      const_node_iterator
      ()

Default constructor.

### Access Methods

Method | Description

    inline std::pair<
        const_e_iterator,
        const_e_iterator>
      valid_prefix
      () const

Subtree valid prefix.

Returns the common prefix range of all nodes in this node's subtree.

    inline const_reference
      operator*
      () const

Const access; returns the const iterator associated with the current leaf.

Should be called only for leaf nodes.

### Metadata Access Methods

These are only defined if `basic_tree`::Node_Update is not `null_trie_node_update`

Method | Description

    inline const_metadata_reference
      get_metadata
      () const

Metadata access.

### Movement Methods

Method | Description

    inline size_type
      num_children
      () const

Returns the number of children in the corresponding node.

If the number of children is 0, then the corresponding node is a leaf; otherwise, it is not a leaf.

    const_node_iterator
      get_child
      (size_type i) const

Returns a const node iterator to the corresponding node's `i`-th child.

### Comparison Methods

Method | Description

    inline bool
      operator==
      (const const_node_iterator &other) const

Compares content to a different iterator object.

    inline bool
      operator!=
      (const const_node_iterator &other) const

Compares content (negatively) to a different iterator object.