adjacent_find
Vyhledá dva sousedící prvky, které jsou buď 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
Vpřed iterační adresování pozice prvním elementem v rozsahu má proběhnout._Last
Vpřed iterační adresování pozici jednoho za poslední prvek v rozsahu má proběhnout._Comp
Binární predikát poskytující podmínce. tím vyhovět hodnoty sousedící prvky v rozsahu být vyhledán.
Vrácená hodnota
Dopředně iterační na první element sousedícího dvojice, které jsou buď rovnající se vzájemně (v první verze) nebo které splňují podmínky uvedené v binárním predikátu (v druhém verze), za předpokladu, že je nalezena dvojici elementů.V opačném iterace tak, aby odkazovaly na _Last je vrácena.
Poznámky
adjacent_find Algoritmus je algoritmus nonmutating sekvence.Rozsah má proběhnout musí být platná. všechny ukazatele musí být dereferenceable a poslední pozice je dostupný od prvního podle incrementation.Čas složitost algoritmus je lineární v počet elementů obsažených v rozsahu.
operator== Slouží k určení nalezena shoda mezi elementy musí ukládat vztahu rovnocennosti mezí jejími 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í: < algoritmus >
Obor názvů: std
Viz také
Referenční dokumentace
Adjacent_find – verze bez predikátu