Microsoft KB Archive/156080

= STL Sample for Non-Predicate Version of adjacent_find Function =

Article ID: 156080

Article Last Modified on 12/1/2003

-

APPLIES TO

 The Standard C++ Library, when used with:  Microsoft Visual C++ 4.2 Professional Edition

 Microsoft Visual C++ 4.2 Enterprise Edition

 Microsoft Visual C++ 5.0 Learning Edition 

-

<div class="notice_section">

This article was previously published under Q156080

<div class="summary_section">

SUMMARY
The sample code below illustrates how to use the min_element STL function in Visual C++.

<div class="moreinformation_section">

Prototype
template<class ForwardIterator> inline ForwardIterator adjacent_find(ForwardIterator first,                                                   ForwardIterator last) ; NOTE: The class/parameter names in the prototype do not match the version in the header file. Some have been modified to improve readability.

Description
The adjacent_find algorithm finds consecutive pair 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 non-predicate version of the algorithm.

Sample Code
//////////////////////////////////////////////////////////////////////   //    // Compile options needed: /GX //   // adfind.cpp : Illustrates how to use the  non-predicate version of   //              adjacent_find function. //   // Functions: //   //   adjacent_find - Locates a matching consecutive sequence in a range. //   // Written by Kalindi Sanghrajka // of Microsoft Technical Support, // Software Core Developer Support. // Copyright (c) 1996 Microsoft Corporation. All rights reserved. //////////////////////////////////////////////////////////////////////

#include #include using namespace std;

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

} The Program Output is:

IntArray { 1, 2, 3, 4, 4, 5, 6, 7, }

Found adjacent pair of matching elements: (4, 4), at location 3

<div class="references_section">