std::find_if with predicate : find if « STL Algorithms Non modifying sequence operations « C++ Tutorial






#include <iostream>
using std::cout;
using std::endl;

#include <algorithm>
#include <vector>
#include <iterator>

bool greater10( int value );

int main()
{
   int a[ 10 ] = { 10, 2, 17, 5, 16, 8, 13, 11, 20, 7 };
   std::vector< int > v( a, a + 10 ); // copy of a
   std::ostream_iterator< int > output( cout, " " );

   cout << "Vector v contains: ";
   std::copy( v.begin(), v.end(), output ); // display output vector

   // locate first occurrence of 16 in v
   std::vector< int >::iterator location;
   // locate first occurrence of value greater than 10 in v
   location = std::find_if( v.begin(), v.end(), greater10 );

   if ( location != v.end() ) // found value greater than 10
      cout << "\n\nThe first value greater than 10 is " << *location
         << "\nfound at location " << ( location - v.begin() );
   else // value greater than 10 not found
      cout << "\n\nNo values greater than 10 were found";

   cout << endl;
   return 0;
}
bool greater10( int value )
{
   return value > 10;
}
Vector v contains: 10 2 17 5 16 8 13 11 20 7

The first value greater than 10 is 17
found at location 2








25.7.find if
25.7.1.Use find_if to find first element divisible by 3
25.7.2.Use find_if to find first element greater than 3
25.7.3.map: find_if
25.7.4.std::find_if with predicate
25.7.5.Demonstrate the find() and find_if() algorithms.
25.7.6.Find value in a vector with find_if
25.7.7.Extract sentences from a vector of chars with help from find_if().