United States    
COMPAQ STORE | PRODUCTS | SERVICES | SUPPORT
| CONTACT US | SEARCH
C++
find_if (3C++std) - Tru64 UNIX
Standard C++ Library
Copyright 1996, Rogue Wave Software, Inc.

NAME

  find_if  - Find an occurrence of value in a sequence that satisfies a
  specifed 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.

COMPLEXITY

  find_if performs at most last-first applications of the corresponding
  predicate.

EXAMPLE

  //
  // find.cpp
  //
  #include <vector>
  #include <algorithm>
  #include <iostream.h>

  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;
   }

  Output : 3 3 2 2

WARNING

  If your compiler does not support default template parameters then you need
  to always supply the Allocator template argument.  For instance you'll have
  to write:

  vector<int, allocator<int> >

  instead of:

  vector<int>

SEE ALSO

  adjacent_find, Algorithms, find, find_end, find_first_of

STANDARDS CONFORMANCE

  ANSI X3J16/ISO WG21 Joint C++ Committee
  

1.800.AT.COMPAQ

privacy and legal statement