adjacent_find
Hledá dvě sousedící prvky, které jsou rovny nebo splňují zadanou podmínku.
template<class ForwardIterator>
ForwardIterator adjacent_find(
ForwardIterator _First,
ForwardIterator _Last
);
template<class ForwardIterator , class BinaryPredicate>
ForwardIterator adjacent_find(
ForwardIterator _First,
ForwardIterator _Last,
BinaryPredicate _Comp
);
Parametry
_First
Předávání iterační adresování pozici první prvek v rozsahu mají být prohledány._Last
Dopředu iterační adresování pozice jeden za poslední prvek v rozsahu mají být prohledány._Comp
Binárního predikátu uvádějící podmínky obsloužit sousedící prvky v oblasti hledané hodnoty.
Vrácená hodnota
Iterační dopředu na první prvek sousedící dvojice, které jsou buď rovnající se navzájem (v první verzi) nebo který splňovat podmínku dán binárního predikátu (v druhé verze), za předpokladu, že je nalezen dvojice prvků.Jinak iterátoru na _Last je vrácena.
Poznámky
adjacent_find Algoritmus je algoritmus nonmutating sekvence.Rozsah prohledávaných musí být platná. všechny ukazatele musí být dereferenceable a je dostupná z první poslední pozice ve incrementation.Čas složitost algoritmu je počet prvků obsažených v rozsahu lineární.
operator== Slouží k určení shoda mezi prvky musí stanovit vztah rovnocennosti mezi jeho operandy.
Příklad
// 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;
}
Požadavky
Záhlaví: <algorithm>
Obor názvů: std
Viz také
Referenční dokumentace
Nonpredicate Version of adjacent_find