find_if

De cppreference.com
Saltar a: navegación, buscar

Sintaxis

    #include <algorithm>
    input_iterator find_if( input_iterator inicio, input_iterator fin, Predicado cond );

La función find_if() devuelve un iterador apuntando al lugar en el rango donde primero se ha encontrado un valor que cumpla la condición cond.

    • Retorno**: un input_iterator x tal que cond(*x)==true; o el iterador fin si no se encuentra.

[editar] Ejemplo

El código siguiente utiliza find_if() junto con el predicado especial mul5m1 para encontrar en un vector de números generador un valor que sea un múltiplo de 5, menos 1 (por ejemplo: 4, 9, 19, ...):

  struct mul5m1 {
    bool operator() (int x) const {
      return (++x % 5 == 0);
      }
    };
 
    srand(time( 0 ));
    vector<int> v;
    for( int i = 0; i < 10; i++ ) {
      v.push_back( rand() );
    }
 
    cout<< "v is: ";
    copy (v.begin(), v.end(), ostream_iterator<int>(cout, " "));
    cout<< endl;
 
    vector<int>::iterator pos_item = find_if( v.begin(), v.end(), mul5m1() );
 
 
    if (pos_item != v.end()) {
      cout<< "v contains a value multiple of five, minus one"
      << " at position: "<< distance(pos_item, v.begin())
      << " with value: "<< *pos_item<< endl;

La salida de este código podría ser por ejemplo la siguiente:

v is:  181 -37 56 13271 6840 -21715 3179 14087 815 -4
v contains a value multiple of five, minus one at position: 6 with value: 3179


[editar] Tópicos Relacionados

Herramientas personales
Espacios de nombres
Variantes
Acciones
Navegación
Herramientas