| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Итераторы и алгоритмы |
| Автор: Ramamba 31.3.2009, 10:29 |
| Есть следующая проблема: написан свой контейнер (подобие листа) и итератор для него. Перегружены все операторы, требуемые для итератора произвольного доступа за исключением "->". Теперь надо сделать так, чтобы с этим итератором мог работать стандартный алгоритм (например, find_if). Не могли бы подсказать, наличие каких методов ожидается от итератора. Буду рад и просто ссылке на какой-нибудь ресурс, где такая проблема поднимается или хорошей книжке. PS Задание состоит в том, что бы всё написать с нуля, поэтому такой выход, как наследование от std::iterator не рассматривается. |
| Автор: korbian 31.3.2009, 11:12 |
| повтори интерфейс стандартного list (информация здесь: http://www.cplusplus.com/reference/stl/list/), реализуй под него Итератор (суть паттерна можно посмотреть тут: http://ooad.asf.ru/Pattern.aspx?IdKat=7&IdPat=35). если все реализуешь правильно, работать будет. будут сложности приводи код!!! |
| Автор: Daevaorn 31.3.2009, 11:33 | ||||
http://www.kuzbass.ru:8086/docs/isocpp/lib-iterators.html#lib.iterator.requirements |
| Автор: Ramamba 31.3.2009, 14:47 |
| спасибо, буду копать) |
| Автор: maxim1000 31.3.2009, 16:18 |
| ещё можно посмотреть boost::iterator_facade даже если его не использовать, можно будет посмотреть список того, что он предоставляет |
| Автор: Ramamba 31.3.2009, 22:02 | ||
| ЕЕЕ парни, спасибо вам. Особенно тебе, Daevaorn. Покопался в этой документации, добавил в итератор тайпдефов
и всё заработало. Алгоритм find_if выбрал из моего листа всё, что надо |