Если std::find
ничего не находит, итератор в этом случае устанавливается на v.end()
.
if ( p != v.end() )
{
// iterator is good
}
Также обратите внимание на общий случай std::find
.
Вот его типичное определение:
namespace std {
template <class InputIterator, class T>
InputIterator find(InputIterator start,
InputIterator finish,
const T& value);
}
В случае сбоя std::find
будет возвращен итератор finish
, так как поиск [start, finish)
и включает start
, но исключает finish
.