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

NAME

  adjacent_find  - Find the first adjacent pair of elements in a sequence
  that are equivalent.

SYNOPSIS

  #include <algorithm>

  template <class ForwardIterator>
   ForwardIterator
   adjacent_find(ForwardIterator first, ForwardIterator last);

  template <class ForwardIterator, class BinaryPredicate>
  ForwardIterator
   adjacent_find(ForwardIterator first, ForwardIterator last,
                 BinaryPredicate pred);

DESCRIPTION

  There are two versions of the adjacent_find algorithm.  The first finds
  equal adjacent elements in the sequence defined by iterators first and last
  and returns an iterator i pointing to the first of the equal elements.  The
  second version lets you specify your own binary function to test for a
  condition.  It returns an iterator i pointing to the first of the pair of
  elements that meet the conditions of the binary function.  In other words,
  adjacent_find returns the first iterator i such that both i and  i + 1 are
  in the range [first, last) for which one of the following conditions holds:

    *i  ==  *(i  +  1)

  or

  pred(*i,*(i  +  1))  == true

  If adjacent_find does not find a match, it returns last.

COMPLEXITY

  adjacent_find performs exactly find(first,last,value) - 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);

     // Try find_if
    iterator it2 =
     find_if(v1.begin(),v1.end(),bind1st(equal_to<int>(),3));

     // Try both adjacent_find variants
     iterator it3 = adjacent_find(v1.begin(),v1.end());

     iterator it4 =
        adjacent_find(v1.begin(),v1.end(),equal_to<int>());

     // 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

  find

STANDARDS CONFORMANCE

  ANSI X3J16/ISO WG21 Joint C++ Committee
  

1.800.AT.COMPAQ

privacy and legal statement