# adjacent_find

Category: algorithms | Component type: function

### Prototype

`Adjacent_find` is an overloaded name; there are actually two `adjacent_find` functions.

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

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

### Description

The first version of `adjacent_find` returns the first iterator `i` such that `i` and `i+1` are both valid iterators in `[first, last)`, and such that `*i == *(i+1)`. It returns `last` if no such iterator exists.

The second version of `adjacent_find` returns the first iterator `i` such that `i` and `i+1` are both valid iterators in `[first, last)`, and such that `binary_pred(*i, *(i+1))` is `true`. It returns `last` if no such iterator exists.

### Definition

Defined in the standard header algorithm, and in the nonstandard backward-compatibility header algo.h.

### Requirements on types

For the first version:

- `ForwardIterator` is a model of Forward Iterator.
- `ForwardIterator`'s value type is Equality Comparable.

For the second version:

- `ForwardIterator` is a model of Forward Iterator.
- `ForwardIterator`'s value type is convertible to `BinaryPredicate`'s first argument type and to its second argument type.

### Preconditions

- `[first, last)` is a valid range.

### Complexity

Linear. If `first == last` then no comparison are performed; otherwise, at most `(last - first) - 1` comparisons.

### Example

Find the first element that is greater than its successor.

    int A[] = {1, 2, 3, 4, 6, 5, 7, 8};
    const int N = sizeof(A) / sizeof(int);

    const int* p = adjacent_find(A, A + N, greater<int>());

    cout << "Element " << p - A << " is out of order: "
         << *p << " > " << *(p + 1) << "." << endl;

### Notes

### See also

`find`, `mismatch`, `equal`, `search`

Copyright © 1999 Silicon Graphics, Inc. All Rights Reserved. TrademarkInformation