# C++ <algorithm> - find_if() Function

The C++ algorithm::find_if function returns an iterator to the first element in the range [first,last) for which the unary function pred returns true.

### Syntax

```template <class InputIterator, class UnaryPredicate>
InputIterator find_if (InputIterator first,
InputIterator last,
UnaryPredicate pred);
```

### Parameters

 `first` Specify initial position of the input iterator. The range used is [first,last). `last` Specify final position of the input iterator. The range used is [first,last). `pred` Specify an unary function that accepts an element in the range as argument, and returns a value convertible to bool. The element will be considered a match if the function returns true.

### Return Value

Returns an iterator pointing to the first element in the range for which pred returns true. If pred returns false for all elements in the range, the function returns last.

### Time Complexity

Linear i.e, Θ(n).

### Example:

In the example below, the algorithm::find_if function is used to find first negative number in the given sequence.

```#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

bool isNegative (int i) {
return (i < 0) ;
}

int main (){
int arr[] = {10, 15, 12, -15, 14, -12};
int * p;
vector<int> vec = {10, 15, 12, 15, 14, 12};
vector<int>::iterator it;

//search for negative number in the array
p = find_if(arr, arr+6, isNegative);

//search for negative number in the vector
it = find_if(vec.begin(), vec.end(), isNegative);

//print result for array
if(p != arr+6) {
cout<<"Element found in the array: "<<*p<<"\n";
}
else {
}

//print result for vector
if(it != vec.end()) {
cout<<"Element found in the vector: "<<*it<<"\n";
}
else {
}

return 0;
}
```

The output of the above code will be:

```Element found in the array: -15