Возьмите следующий пример, взятый из справочной страницы cplusplus.com и измененный для возврата false
:
// find_if example
#include <iostream> // std::cout
#include <algorithm> // std::find_if
#include <vector> // std::vector
bool IsOdd (int i) {
return ((i%2)==1);
}
int main ()
{
std::vector<int> myvector;
myvector.push_back(10);
myvector.push_back(20);
myvector.push_back(40);
myvector.push_back(50);
std::vector<int>::iterator it = std::find_if (myvector.begin(), myvector.end(), IsOdd);
std::cout << "The first odd value is " << *it << '\n';
return 0;
}
Поскольку никакое значение в myvector
не является нечетным, возвращается InputIterator last , который не определен:
The first odd value is -1727673935
Как правильно обрабатывать этот вывод?
Как я могу узнать, std::find_if()
вернул false
, если выходные данные непредсказуемы и сравнение со всем вектором для подтверждения, что результирующее значение не существует, отрицает цель использования std::find_if()
для начала?