Front Page / Algorithms / Querying Algorithms / find

# find

### Synopsis

    template<
          typename Sequence
        , typename T
        >
    struct find
    {
        typedef unspecified type;
    };

### Description

Returns an iterator to the first occurrence of type `T` in a `Sequence`.

### Header

    #include <boost/mpl/find.hpp>

### Parameters

Parameter | Requirement | Description
--- | --- | ---
`Sequence` | Forward Sequence | A sequence to search in.
`T` | Any type | A type to search for.

### Expression semantics

For any Forward Sequence `s` and arbitrary type `t`:

    typedef find<s,t>::type i;

Return type: | Forward Iterator.

Semantics:

Equivalent to

    typedef find_if<s, is_same<_,t> >::type i;

### Complexity

Linear. At most `size<s>::value` comparisons for identity.

### Example

    typedef vector<char,int,unsigned,long,unsigned long> types;
    typedef find<types,unsigned>::type iter;

    BOOST_MPL_ASSERT(( is_same< deref<iter>::type, unsigned > ));
    BOOST_MPL_ASSERT_RELATION( iter::pos::value, ==, 2 );

### See also

Querying Algorithms, `contains`, `find_if`, `count`, `lower_bound`