Presumably because the type of the expression std::find(v.begin(), v.end(), 5) is not convertible to int*.
In particular, if v is a std::vector<int>, then v.begin() is std::vector<int>::iterator.
Note that all pointers are iterators, but not all iterators are pointers.
#include <algorithm>
int main() {
int v1[] {1, 3, 5, 7, 9};
int *p1(std::find(std::begin(v1), std::end(v1), 5));
std::vector<int> v2 {1, 3, 5, 7, 9};
std::vector<int>::iterator p2(std::find(std::begin(v2), std::end(v2), 5));
// that ugly syntax is one of the reasons to use auto
}