다음을 통해 공유


adjacent_find

하나를 두 개의 인접 한 요소에 대 한 검색 하거나 지정 된 조건이 충족 합니다.

template<class ForwardIterator>
   ForwardIterator adjacent_find(
      ForwardIterator _First, 
      ForwardIterator _Last
   );
template<class ForwardIterator , class BinaryPredicate>
   ForwardIterator adjacent_find(
      ForwardIterator _First, 
      ForwardIterator _Last, 
      BinaryPredicate _Comp
   );

매개 변수

  • _First
    검색할 주소 범위의 첫 번째 요소의 위치는 정방향 반복기입니다.

  • _Last
    검색할 위치 하나 과거 최종 요소 범위에 있는 주소는 정방향 반복기입니다.

  • _Comp
    조건 값이 인접 한 요소에서 검색 범위를 만족 하 게 이진 술 부.

반환 값

정방향 반복기 중 하나 (첫 번째 버전)에서 서로 같음 또는 이진 술 부 (두 번째, 버전)에서 주어진 조건을 만족 시키는 쌍의 요소를 발견 하는 경우에 인접 한 쌍의 첫 번째 요소입니다.그렇지 않으면 반복기가 가리키는 _Last 이 반환 됩니다.

설명

adjacent_find 알고리즘 nonmutating 시퀀스 알고리즘입니다.검색할 범위의 유효 해야 합니다. 모든 포인터는 dereferenceable 이어야 하 고 마지막 위치에서 첫 번째 접근할 여 증분 합니다.알고리즘의 시간 복잡도 선형의 범위에 포함 된 요소 수입니다.

operator== 일치 요소 간에 등가 관계 연산자는 피연산자 간의 부과 해야 확인 하는 데 사용 합니다.

예제

// alg_adj_fnd.cpp
// compile with: /EHsc
#include <list>
#include <algorithm>
#include <iostream>

// Returns whether second element is twice the first
bool twice (int elem1, int elem2 )
{
   return elem1 * 2 == elem2;
}

int main( ) 
{
   using namespace std;
   list <int> L;
   list <int>::iterator Iter;
   list <int>::iterator result1, result2;
   
   L.push_back( 50 );
   L.push_back( 40 );
   L.push_back( 10 );
   L.push_back( 20 );
   L.push_back( 20 );

   cout << "L = ( " ;
   for ( Iter = L.begin( ) ; Iter != L.end( ) ; Iter++ )
      cout << *Iter << " ";
   cout << ")" << endl;
   
   result1 = adjacent_find( L.begin( ), L.end( ) );
   if ( result1 == L.end( ) )
      cout << "There are not two adjacent elements that are equal."
           << endl;
   else
      cout << "There are two adjacent elements that are equal."
           << "\n They have a value of "
           <<  *( result1 ) << "." << endl;

   result2 = adjacent_find( L.begin( ), L.end( ), twice );
   if ( result2 == L.end( ) )
      cout << "There are not two adjacent elements where the "
           << " second is twice the first." << endl;
   else
      cout << "There are two adjacent elements where "
           << "the second is twice the first."
           << "\n They have values of " << *(result2++);
      cout << " & " << *result2 << "." << endl;
}
  
  
  
  

요구 사항

헤더: <algorithm>

네임 스페이스: std

참고 항목

참조

Nonpredicate Version of adjacent_find

Predicate Version of adjacent_find

표준 템플릿 라이브러리