STL Sample for Non-Predicate Version of adjacent_find Function
ID: Q156080
|
The information in this article applies to:
-
The Standard C++ Library, included with:
-
Microsoft Visual C++ 32-bit Edition, version 4.2
SUMMARY
The sample code below illustrates how to use the min_element STL function
in Visual C++.
MORE INFORMATION
Required Header
<algorithm>
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 <algorithm>
#include <iostream>
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
REFERENCES
Visual C++ Books On Line: Visual C++ Books:C/C++:Standard C++ Library
Reference.
Additional query words:
STL adjacent_find
Keywords : kbcode STLIss
Version : winnt:
Platform : winnt
Issue type : kbhowto