Udostępnij za pośrednictwem


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

adjacent_find — wersja predykatu

Standardowa biblioteka szablonów