Front Page / Algorithms / Querying Algorithms / min_element

# min_element

### Synopsis

    template<
          typename Sequence
        , typename Pred = less<_1,_2>
        >
    struct min_element
    {
        typedef unspecified type;
    };

### Description

Returns an iterator to the smallest element in `Sequence`.

### Header

    #include <boost/mpl/min_element.hpp>

### Parameters

Parameter | Requirement | Description
--- | --- | ---
`Sequence` | Forward Sequence | A sequence to be searched.
`Pred` | Binary Lambda Expression | A comparison criteria.

### Expression semantics

For any Forward Sequence `s` and binary Lambda Expression `pred`:

    typedef min_element<s,pred>::type i;

Return type: | Forward Iterator.
Semantics: | `i` is the first iterator in [`begin<s>::type`, `end<s>::type`) such that for every iterator `j` in [`begin<s>::type`, `end<s>::type`),
    apply< pred, deref<j>::type, deref<i>::type >::type::value == false

### Complexity

Linear. Zero comparisons if `s` is empty, otherwise exactly `size<s>::value - 1` comparisons.

### Example

    typedef vector<bool,char[50],long,double> types;
    typedef min_element<
          transform_view< types,sizeof_<_1> >
        >::type iter;

    BOOST_MPL_ASSERT(( is_same< deref<iter::base>::type, bool> ));

### See also

Querying Algorithms, `max_element`, `find_if`, `upper_bound`, `find`