Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

Front Page / Algorithms / Querying Algorithms / find_if

find_if

Synopsis

template<
      typename Sequence
    , typename Pred
    >
struct find_if
{
    typedef unspecified type;
};

Description

Returns an iterator to the first element in Sequence that satisfies the predicate Pred.

Header

#include <boost/mpl/find_if.hpp>

Parameters

Parameter Requirement Description
Sequence Forward Sequence A sequence to search in.
Pred Unary Lambda Expression A search condition.

Expression semantics

For any Forward Sequence s and unary Lambda Expression pred:

typedef find_if<s,pred>::type i;
Return type:

Forward Iterator.

Semantics:

i is the first iterator in the range [begin<s>::type, end<s>::type) such that

apply< pred,deref<i>::type >::type::value == true

If no such iterator exists, i is identical to end<s>::type.

Complexity

Linear. At most size<s>::value applications of pred.

Example

typedef vector<char,int,unsigned,long,unsigned long> types;
typedef find_if<types, is_same<_1,unsigned> >::type iter;

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

See also

Querying Algorithms, find, count_if, lower_bound