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