второе условие правильно так:
| Код | #include <functional> #include <algorithm> #include <iostream>
struct nuller : public std::unary_function<int, bool> { result_type operator()(argument_type val) const { while (val) { if (val % 10 == 0) return (true); val /= 10; } return (false); } };
typedef int* iterator; iterator found = array; iterator end = array+100; // Произвести линейный поиск чисел, в записи которого есть хотя бы один ноль while((found = std::find_if(found, end, nuller())) != end) std::cout << *found++ << std::endl;
|
Добавлено через 6 минут и 48 секунд а лучше написать обобщенный алгоритм copy_if:
| Код | template <typename Iter1, typename Iter2, typename Pred1> void copy_if(Iter1 beg, Iter1 end, Iter2 beg2, Pred1 f) { while (beg != end) { if (f(*beg)) *beg2++ = *beg; beg++; } } |
и тогда в программе:
| Код | #include <iterator>
//... copy_if(array, array+100, std::ostream_iterator<int>(std::cout, "\n"), nuller());
|
|