find_if(3C++) - find_if(3C++)
Standard C++ Library Copyright 1998, Rogue Wave Software, Inc.
NAMEfind_if
- Finds an occurrence of a value in a sequence that satisfies a speciā
fied predicate.
SYNOPSIS
#include <algorithm>
template <class InputIterator, class Predicate>
InputIterator find_if(InputIterator first,
InputIterator last,
Predicate pred);
DESCRIPTION
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 first and last, 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 [first, last) for
which the following condition holds:
pred(*i) == true.
If no such iterator is found, find_if returns last.
COMPLEXITYfind_if performs at most last-first applications of the corresponding
predicate.
EXAMPLE
/
// find.cpp
//
#include <vector>
#include <algorithm>
#include <functional>
#include <iostream>
using namespace std;
int main()
{
typedef vector<int>::iterator iterator;
int d1[10] = {0,1,2,2,3,4,2,2,6,7};
// Set up a vector
vector<int> v1(d1,d1 + 10);
// Try find
iterator it1 = find(v1.begin(),v1.end(),3);
// it1 = v1.begin() + 4;
// Try find_if
iterator it2 =
find_if(v1.begin(),v1.end(),bind1st(equal_to<int>(),3));
// it2 = v1.begin() + 4
// Try both adjacent_find variants
iterator it3 = adjacent_find(v1.begin(),v1.end());
// it3 = v1.begin() +2
iterator it4 =
adjacent_find(v1.begin(),v1.end(),equal_to<int>());
// v4 = v1.begin() + 2
// Output results
cout << *it1 << " " << *it2 << " " << *it3 << " "
<< *it4 << endl;
return 0;
}
Program Output3 3 2 2WARNINGS
If your compiler does not support default template parameters, then you
always need to supply the Allocator template argument. For instance,
you have to write:
vector<int, allocator<int> >
instead of:
vector<int>
If your compiler does not support namespaces, then you do not need the
using declaration for std.
SEE ALSO
adjacent_find, Algorithms, find, find_end, find_first_of
Rogue Wave Software 02 Apr 1998 find_if(3C++)