# find_if

Searches for the first element that matches a criterion

### Key Facts

**Gyroscopic Couple**: The rate of change of angular momentum () = (In the limit).

- = Moment of Inertia.
- = Angular velocity
- = Angular velocity of precession.

**Blaise Pascal**(1623-1662) was a French mathematician, physicist, inventor, writer and Catholic philosopher.

**Leonhard Euler**(1707-1783) was a pioneering Swiss mathematician and physicist.

## Definition

The**find_if()**algorithm is defined in the standard header

**<algorithm>**and in the nonstandard backward-compatibility header

**<algo.h>**.

## Interface

#include <algorithm> template < class InputIterator, class Predicate> InputIterator find_if( InputIterator first, InputIterator last, Predicate pred );

**Parameters:**

Parameter | Description |
---|---|

first | An input iterator addressing the position of the first element in the range to be searched |

last | An input iterator addressing the position one past the final element in the range to be searched |

pred | User-defined predicate function object that defines the condition to be satisfied by the element being searched for. A predicate takes single argument and returns true or false |

## Description

The**find_if()**algorithm searches the range

`[first, last)`

for a value that satisfies the unary predicate `pred`

. ## Return Value

Returns an**iterator**pointing to the first value from the given range that satisfies

`pred`

, or `last`

if no such value is found.## Complexity

Complexity is**linear**, at most, performs as many applications of

`pred`

as the number of elements in the range `[first,last)`

.Example:

##### Example - find_if algorithm

Problem

This program determines if an integer is divisible by 3. Returns true if n is divisible by 3, and otherwise false.

Workings

#include <iostream> #include <algorithm> #include <vector> using namespace std; bool isDivisibleByThree ( int n //in ) { return (n%3 == 0); } int main() { int a[] = {1, 2, 4, 5, 7, 12, 9, 8, 3, 6}; vector<int> v(a, a+10); cout <<"\nHere are the contents of v:\n"; for (vector<int>::size_type i=0; i<v.size(); i++) cout <<v.at(i)<<" "; vector<int>::iterator p; p = find_if(v.begin(), v.end(), isDivisibleByThree); if (p == v.end()) cout <<"\nThere are no values divisible by 3.\n"; else cout <<"\nThe first value in the sequence divisible by 3 is " <<*p<<",\nwhich was found at location " <<(int)(p-v.begin()+1)<<".\n"; return 0; }

Solution

**Output:**Here are the contents of v:

1 2 4 5 7 12 9 8 3 6 The first value in the sequence divisible by 3 is 12,

which was found at location 6.

References