Aracılığıyla paylaş


adjacent_find

İki bitişik öğeleri arar eşit veya belirtilen bir koşula uyması.

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

Parametreler

  • _First
    Aranacak adres aralığındaki ilk öğenin konumunu bir ileriye doğru Yineleyici.

  • _Last
    Aranacak konumu bir son öğe geçen aralıktaki adresleme bir ileriye doğru Yineleyici.

  • _Comp
    Koşulu Aranmakta aralığında bitişik öğeleri değerleri ile karşılanan vererek ikili karşılaştırma belirtimi.

Dönüş Değeri

İleriye doğru bir yineleyici (ilk sürümünde) eşit ya da birbirleriyle olan ya da böyle çifti öğeleri bulundu koşuluyla, (ikinci sürüm), gelen ikili karşılaştırma belirtimi tarafından verilen koşula uyması bitişik çiftinin ilk öğe için.Aksi halde, işaret eden bir yineleyici _Last döndürülür.

Notlar

adjacent_find Nonmutating sırası algoritması algoritmasıdır.Aranacak aralığı geçerli olması gerekir; Tüm işaretçiler dereferenceable ve son konuma birinciden erişilebildiğinden tarafından incrementation.Algoritma zaman karmaşıklığı aralığında bulunan öğe sayısı doğrusaldır.

operator== Öğeleri arasındaki eşleşme İşlenenlerini arasında bir eşdeğerlik ilişkisi tanıtamazlar gerekir belirlemek için kullanılır.

Örnek

// 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;
}
  
  
  
  

Gereksinimler

Başlık: <algorithm>

Namespace: std

Ayrıca bkz.

Başvuru

Nonpredicate Version of adjacent_find

Predicate Version of adjacent_find

Standart Şablon Kütüphanesi