adjacent_find
Wyszukuje dwa sąsiadujące elementy, które są równe lub spełniają określony warunek.
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
Sterująca do przodu pozycja pierwszym elementem w zakresie opracowywania do przeszukania._Last
Sterująca do przodu pozycja jedną minął ostatniego elementu w zakresie opracowywania do przeszukania._Comp
Predykat binarne dając warunek muszą być spełnione przez wartości sąsiadujących elementów w zakresie przeszukiwany.
Wartość zwracana
Do przodu sterująca pierwszy element pary sąsiadujące, które są równe na wzajemne (w wersji pierwszego) lub które spełniają warunek podane przez predykat binarny (w wersji drugi), pod warunkiem, że dwa elementy zostanie znaleziony.W przeciwnym razie iterację wskazujące _Last jest zwracana.
Uwagi
adjacent_find Algorytm to algorytm nonmutating sekwencji.Zakres do przeszukania musi być prawidłowym; wszystkie wskaźniki musi być dereferenceable i ostatnie położenie jest dostępny z pierwszym przez incrementation.Złożoność czasu algorytmu jest liniowa w liczbę elementów znajdujących się w zakresie.
operator== Używany w celu określenia dopasowania między elementami musi nakładać relacji równoważne swoich argumentów.
Przykład
// 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;
}
Wymagania
Nagłówek: < algorytm >
Przestrzeń nazw: std
Zobacz też
Informacje
adjacent_find — wersja bez predykatu