# Spec DfsPreorderIterator
Iterate vertices of a graph in depth-first preorder fashion.

Extends | Iter
All Extended | Iter
All Impl'd | IteratorAssociatedTypesConcept
Defined in | <seqan/graph_types.h>
Signature | `Iterator<TGraph, DfsPreorderIterator>::Type; template <typename TGraph, typename TSpec> class Iter<TGraph, GraphIterator<InternalDfsPreorderIterator<TSpec> >;`

## Template Parameters

`TGraph` | The graph to iterate the vertices of.

## Member Function Overview

- `Iter::Iter();, Iter::Iter(iter);, Iter::Iter(graph, v);`
  Constructor.

### Member Functions Inherited From Iter

- `Iter`

## Interface Function Overview

### Interface Functions Inherited From IteratorAssociatedTypesConcept

- `operator*`
- `value`
- `getValue`

## Interface Metafunction Overview

### Interface Metafunctions Inherited From Iter

- `Container`
- `IterComplementConst`
- `IterMakeConst`
- `Spec`

### Interface Metafunctions Inherited From IteratorAssociatedTypesConcept

- `Difference`
- `GetValue`
- `Pointer`
- `Reference`
- `Value`

## Detailed Description

Preorder means that a vertex is visited before its neighbours are.

The first signature is the signature of the corresponding graph's Iterator metafunction call. The second call is the internal definition of the type. You should always get this type using the metafunction call from the first signature.

## Member Functions Detail

### `Iter::Iter(); Iter::Iter(iter); Iter::Iter(graph, v);`

Constructor.

#### Parameters

`iter` | Other DfsPreorderIterator to copy from.
`graph` | The Graph to iterate vertices in DFS preorder fashion.
`v` | The descriptor of the vertex to start DFS preorder iteration.

#### Data Races

If not stated otherwise, concurrent invocation is not guaranteed to be thread-safe.

#### Dox Sources

    /*!
     * @class DfsPreorderIterator
     *
     * @extends Iter
     *
     * @headerfile <seqan/graph_types.h>
     *
     * @brief Iterate vertices of a graph in depth-first preorder fashion.
     *
     * @signature Iterator<TGraph, DfsPreorderIterator>::Type;
     * @signature template <typename TGraph, typename TSpec> class Iter<TGraph,
     *            GraphIterator<InternalDfsPreorderIterator<TSpec> >;
     *
     * @tparam TGraph The graph to iterate the vertices of.
     *
     * Preorder means that a vertex is visited before its neighbours are.
     *
     * The first signature is the signature of the corresponding @link
     * ContainerConcept#Iterator graph's Iterator @endlink metafunction call. The
     * second call is the internal definition of the type. You should always get
     * this type using the metafunction call from the first signature.
     *
     * @fn DfsPreorderIterator::DfsPreorderIterator
     *
     * @brief Constructor.
     *
     * @signature Iter::Iter();
     * @signature Iter::Iter(iter);
     * @signature Iter::Iter(graph, v);
     *
     * @param[in] iter Other DfsPreorderIterator to copy from.
     * @param[in] graph The @link Graph @endlink to iterate vertices in DFS preorder
     *                  fashion.
     * @param[in] v The descriptor of the vertex to start DFS preorder iteration.
     */