Predicate Version of adjacent_find
조건자 버전을 사용 하는 방법을 보여 줍니다 있는 adjacent_find Visual C++에서 표준 템플릿 라이브러리 (STL) 함수입니다.
template<class ForwardIterator, class BinaryPredicate> inline
ForwardIterator adjacent_find(
ForwardIterator First,
ForwardIterator Last,
BinaryPredicate Binary_Pred
) ;
설명
[!참고]
프로토타입에 클래스/매개 변수 이름은 헤더 파일에서 버전이 일치 하지 않습니다.일부 가독성을 높이기 위해 수정 되었습니다.
adjacent_find 알고리즘 시퀀스의 연속 된 쌍의 일치 하는 요소를 찾습니다.adjacent_find범위의 첫 연속 일치 하는 요소를 참조 하는 반복기를 반환 합니다. [First, Last), 또는 이러한 요소가 없으면 마지막.비교를 수행 하 되 사용 하는 binary_pred 알고리즘의 현재이 버전에서 함수.Binary_pred 함수는 사용자 정의 함수를 사용할 수 있습니다.또한 STL에서 제공 되는 이진 함수 개체 중 하나를 사용할 수 있습니다.
예제
// adfind2.cpp
// compile with: /EHsc
// Illustrates how to use the predicate version of
// adjacent_find function.
//
// Functions:
// adjacent_find - Locate a consecutive sequence in a range.
// disable warning C4786: symbol greater than 255 character,
// okay to ignore
#pragma warning(disable: 4786)
#include <iostream>
#include <algorithm>
#include <functional>
#include <string>
#include <vector>
using namespace std;
int main()
{
const int VECTOR_SIZE = 5 ;
// Define a template class vector of strings
typedef vector<string > StringVector ;
//Define an iterator for template class vector of strings
typedef StringVector::iterator StringVectorIt ;
StringVector NamesVect(VECTOR_SIZE) ; //vector containing names
StringVectorIt location ; // stores the position for the
// first pair of matching
// consecutive elements.
StringVectorIt start, end, it ;
// Initialize vector NamesVect
NamesVect[0] = "Aladdin" ;
NamesVect[1] = "Jasmine" ;
NamesVect[2] = "Mickey" ;
NamesVect[3] = "Minnie" ;
NamesVect[4] = "Goofy" ;
start = NamesVect.begin() ; // location of first
// element of NamesVect
end = NamesVect.end() ; // one past the location
// last element of NamesVect
// print content of NamesVect
cout << "NamesVect { " ;
for(it = start; it != end; it++)
cout << *it << ", " ;
cout << " }\n" << endl ;
// Find the first name that is lexicographically greater
// than the following name in the range [first, last + 1).
// This version performs matching using binary predicate
// function greater<string>
location = adjacent_find(start, end, greater<string>()) ;
// print the first pair of strings such that the first name is
// lexicographically greater than the second.
if (location != end)
cout << "(" << *location << ", " << *(location + 1) << ")"
<< " the first pair of strings in NamesVect such that\n"
<< "the first name is lexicographically greater than "
<< "the second\n" << endl ;
else
cout << "No consecutive pair of strings found such that\n"
<< "the first name is lexicographically greater than "
<< "the second\n" << endl ;
}
Output
NamesVect { Aladdin, Jasmine, Mickey, Minnie, Goofy, }
(Minnie, Goofy) the first pair of strings in NamesVect such that
the first name is lexicographically greater than the second
요구 사항
헤더: <algorithm>