Witam
Zastanawia mnie uzasadnienie dla braku wersji std::find z funktorem (pisząc w uproszczeniu).
Wiem, że można użyć find_if i przekazać jakiś funktor zainicjowany wartością, którą chcemy znaleźć. Ma to jakiś sens. Ale brak std::find z funktorem sprawia, że nie można użyć tej funkcji w implementacji std:
template <class ForwardIterator1, class ForwardIterator2> ForwardIterator1 find_first_of(ForwardIterator1 first1, ForwardIterator1 last1,
ForwardIterator2 first2, ForwardIterator2 last2) {
if (first1 == last1)
return last1;
if (first2 == last2) {
return last1;
}
while (first1 != last1) {
if (pmstl::find(first2, last2, *first1) != last2)
return first1;
++first1;
}
return last1;
}
Wszak
if (pmstl::find(first2, last2, *first1) != last2)
nie przyjmuje funktora i trzeba pisać for/while co jest błędotwórcze i nie zgodne z duchem wielokrotnego wykorzystania kodu.
Jakie jest Wasze zdanie na ten temat:D