VMS Help
CXXLSTD, Algorithms, find_if

 *Conan The Librarian

 			   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
  Close     Help