共用方式為


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 演算法是非變化的序列演算法。 要搜尋的範圍必須有效;所有指標都必須可以取值,而且可透過遞增從第一個位置到達最後一個位置。 演算法的時間複雜性,在範圍內包含的元素數目中是線性。

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

請參閱

參考

adjacent_find 的非述詞版本

adjacent_find 的述詞版本

標準樣板程式庫