如何为合成数据创建迭代器

how to create iterators for synthetic data?

本文关键字:数据 创建 迭代器      更新时间:2023-10-16

我正在使用boost::iterator_facade<>进行合成数据的迭代器。数据只能通过调用句柄上的函数来访问。手柄被包裹在MyHandle中。我已经弄清楚,我需要使用MyHandleValueReference模板参数。所以迭代器声明是这样的:

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

这是做这种事情的唯一方法吗?或者是否有更好的方法为合成数据创建迭代器?此外,boost::forward_traversal_tag似乎没有很好地传达数据的人为性,代码应该使用不同的迭代器标签吗?

boost::function_input_iterator将生成器函数包装在迭代器中。对迭代器进行解引用,调用函数并返回结果:

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