
Module: Standard C++ Library Library: Algorithms
Function
Algorithm that finds an occurrence of a value in a sequence that satisfies a specified predicate
#include <algorithm>
namespace std {
template <class InputIterator, class Predicate>
InputIterator find_if(InputIterator start,
InputIterator finish,
Predicate pred);
}
The find_if() algorithm allows you to search for the first element in a sequence that satisfies a particular condition. The sequence is defined by iterators start and finish, while the condition is defined by the third argument: a predicate function that returns a boolean value. find_if() returns the first iterator i in the range [start, finish) for which the following condition holds:
pred(*i) == true.
If no such iterator is found, find_if() returns finish.
find_if() performs at most finish-start applications of the corresponding predicate.
//
// find.cpp
//
#include <vector> // for vector
#include <algorithm> // for adjacent_find, find
#include <functional> // for bind1st, equal_to
#include <iostream> // for cout, endl
int main ()
{
// Typedef for convenience.
typedef std::vector<int, std::allocator<int> > Vector;
const Vector::value_type arr[] = { 0, 1, 2, 2, 3,
4, 2, 2, 6, 7 };
// Set up a vector.
const Vector v1 (arr, arr + sizeof arr / sizeof *arr);
// Try find.
Vector::const_iterator it = std::find (v1.begin (),
v1.end (), 3);
std::cout << *it << ' ';
// Try find_if.
it = std::find_if (v1.begin (), v1.end (),
std::bind1st (std::equal_to<Vector::value_type>(),
3));
std::cout << *it << ' ';
// Try both adjacent_find variants.
it = std::adjacent_find (v1.begin (), v1.end ());
std::cout << *it << ' ';
it = std::adjacent_find (v1.begin (), v1.end (),
std::equal_to<Vector::value_type>());
std::cout << *it << std::endl;
return 0;
}
Program Output:
3 3 2 2
adjacent_find(), Algorithms, find(), find_end(), find_first_of()
ISO/IEC 14882:1998 -- International Standard for Information Systems -- Programming Language C++, Section 25.1.2
Copyright (c) 1994-2006 Rogue Wave Software, a Quovadx Division.
Licensed under the Apache License, Version 2.0.
Contact Rogue Wave about documentation or support issues. You can also seek help from other developers through the Apache stdcxx community (see below).