Udostępnij za pośrednictwem


adjacent_find

Wyszukuje dwóch sąsiadujących elementów, 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
    Iteratora przodu adresowania pozycja pierwszego elementu w zakresie mają być przeszukiwane.

  • _Last
    Iteratora przodu adresowania położenie jednego elementu końcowego w przeszłości w zakresie mają być przeszukiwane.

  • _Comp
    Predykatu dwuelementowego podając muszą być spełnione przez wartości sąsiadujących elementów w zakresie przeszukiwanych warunek.

Wartość zwracana

Do przodu iteratora pierwszy element pary sąsiednich są wzajemnie równe (w pierwszej wersji) lub spełniających warunek przez predykatu dwuelementowego (w drugiej wersji), pod warunkiem że jest para elementów.W przeciwnym razie iterację, wskazując _Last jest zwracany.

Uwagi

adjacent_find Algorytm jest algorytm nonmutating sekwencji.Zakres przeszukiwanych musi być ważny; wszystkie wskaźniki muszą być dereferenceable i ostatniej pozycji jest dostępny z pierwszym przez incrementation.Złożoność czasu algorytm jest liniowa w liczbie elementów zawartych w zakresie.

operator== Używana do określenia dopasowania między elementami należy nałożyć relacji równoważności między 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: <algorithm>

Obszar nazw: std

Zobacz też

Informacje

Nonpredicate Version of adjacent_find

Predicate Version of adjacent_find

Standardowa biblioteka szablonu