Как создать итераторы для синтетических данных? - PullRequest
2 голосов
/ 21 октября 2011

Я делаю итераторы, используя boost::iterator_facade<> для синтетических данных. Данные доступны только при вызове функции в дескрипторе. Ручка завернута в MyHandle. Я понял, что мне нужно использовать MyHandle для параметров шаблона Value и Reference. Итак, объявление итератора выглядит так:

class MyIterator
    : public boost::iterator_facade<
        MyIterator
        , MyHandle
        , boost::forward_traversal_tag
        , MyHandle
    >

Это единственный способ, как это сделать? Или есть лучший способ создания итераторов для синтетических данных? Кроме того, boost::forward_traversal_tag, похоже, плохо передает искусственность данных, должен ли код использовать другой тег итератора?

1 Ответ

2 голосов
/ 21 октября 2011

boost::function_input_iterator оборачивает функцию генератора в итератор. Разыменование итератора вызывает функцию и возвращает ее результат:

http://www.boost.org/doc/libs/1_47_0/libs/iterator/doc/function_input_iterator.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...