Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
Export (0) Print
Expand All
abs
Expand Minimize

Nonpredicate Version of adjacent_find

Illustrates how to use the nonpredicate version of the adjacent_find Standard Template Library (STL) function in Visual C++.

template<class ForwardIterator> inline 
   ForwardIterator adjacent_find( 
      ForwardIterator First, 
      ForwardIterator Last 
   );

Note Note

The class/parameter names in the prototype do not match the version in the header file. Some have been modified to improve readability.

The adjacent_find algorithm finds consecutive pairs of matching elements in a sequence. The adjacent_find algorithm returns an iterator referencing the first consecutive matching element in the range (First, Last), or Last if there are no such elements. Comparison is done using operator== in this nonpredicate version of the algorithm.

// adfind.cpp
// compile with: /EHsc
// Illustrates how to use the  non-predicate version of
//              adjacent_find function.
//
// Functions:
//   adjacent_find - Locate a matching consecutive sequence in a range.

#include <algorithm>
#include <iostream>

using namespace std;

int main()
{
    const int ARRAY_SIZE = 8 ;
    int IntArray[ARRAY_SIZE] = { 1, 2, 3, 4, 4, 5, 6, 7 } ;

    int *location ;   // stores the position for the first pair
                      // of matching consecutive elements.

    int i ;

    // print content of IntArray
    cout << "IntArray { " ;
    for(i = 0; i < ARRAY_SIZE; i++)
        cout << IntArray[i] << ", " ;
    cout << " }" << endl ;

    // Find the first pair of matching consecutive elements
    // in the range [first, last + 1)
    // This version performs matching using operator==
    location = adjacent_find(IntArray, IntArray + ARRAY_SIZE) ;

    //print the matching consecutive elements if any were found
    if (location != IntArray + ARRAY_SIZE)  // matching consecutive
                                            // elements found
        cout << "Found adjacent pair of matching elements: ("
        << *location << ", " << *(location + 1) << "), " <<
        "at location " << location - IntArray << endl;
    else         // no matching consecutive elements were found
        cout << "No adjacent pair of matching elements were found"
        << endl ;

}

IntArray { 1, 2, 3, 4, 4, 5, 6, 7,  }
Found adjacent pair of matching elements: (4, 4), at location 3

Header: <algorithm>

Show:
© 2015 Microsoft