глядит вполне разумно, но… Е

Автор admin Четверг, 4 июня 2009 11:32

глядит вполне разумно, но… Если мы хотим, чтобы наше решение поддерживало предикаты, которые являются указателями на обычные функции, становится понятно, почему оно не работает — адаптер notl ожидает получить адаптируемый объект функции. Остается лишь написать алгоритм copy_if() «с нуля». Изучение других алгоритмов копирования показывает, что на концептуальном уровне следует использовать разные итераторы для ввода и вывода, поэтому решение может выглядеть так: //: C06:copy_if.h // Написание собственных алгоритмов в стиле STL #ifndef C0PY_IF_H #define C0PY_IF_H tempiate Outputlter copy_if(Forwardlter begin. Forwardlter end. Outputlter dest. UnaryPred f) { while(begin != end) { if(f(*begin)) *dest++ = *begin; ++begin; } return dest: } #endif // C0PY_IF_H ///:- Обратите внимание: инкремент begin не может интегрироваться в выражение копирования. Итоги Эта глава дает читателю практическое представление об алгоритмах стандартной библиотеки шаблонов. Иначе говоря, вы должны знать алгоритмы STL и разбираться в них достаточно хорошо, чтобы регулярн


Комментарии закрыты.