Compartir a través de


adjacent_find

Buscar dos elementos adyacentes que son iguales o cumplen una condición especificada.

template<class ForwardIterator>
   ForwardIterator adjacent_find(
      ForwardIterator _First, 
      ForwardIterator _Last
   );
template<class ForwardIterator , class BinaryPredicate>
   ForwardIterator adjacent_find(
      ForwardIterator _First, 
      ForwardIterator _Last, 
      BinaryPredicate _Comp
   );

Parámetros

  • _First
    Un iterador hacia delante que dirige la posición del primer elemento del intervalo que se buscará.

  • _Last
    Un iterador hacia delante que dirige la posición una más allá del último elemento en el intervalo que se buscará.

  • _Comp
    El predicado binario que proporciona la condición que se completará por los valores de los elementos adyacentes en el intervalo que se busca.

Valor devuelto

Un iterador en el primer elemento de pares adyacentes que son iguales entre sí (en la primera versión) o que cumplen la condición especificada por el predicado binario (en la segunda versión), siempre que un par de elementos se encuentra.si no, un iterador que señala a _Last se devuelve.

Comentarios

el algoritmo de adjacent_find es un algoritmo nonmutating de la secuencia.el intervalo que se buscará debe ser válido; todos los punteros deben ser dereferenceable y la posición última es accesible de primera por el aumento.La complejidad del tiempo del algoritmo es lineal en el número de elementos incluidos en el intervalo.

operator== utilizado para determinar la coincidencia entre los elementos debe imponer una relación de equivalencia entre sus operandos.

Ejemplo

// 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;
}
  
  
  
  

Requisitos

encabezado: <algoritmo>

espacio de nombres: std

Vea también

Referencia

Nonpredicate Version of adjacent_find

Predicate Version of adjacent_find

Biblioteca de plantillas estándar