find_if
De cppreference.com
Sintaxis
#include <algorithm> input_iterator find_if( input_iterator inicio, input_iterator fin, Predicado cond );
- inicio y fin modelan Input Iterator.
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
- find -- encuentra un valor específico en un rango
- find_first_of -- encuentra uno de varios posibles valores
- count, count_if -- cuenta ocurrencias de un valor