我正在使用boost::iterator_facade<>制作用于合成数据的迭代器。只有通过调用句柄上的函数才能访问数据。句柄被包装到MyHandle中。我已经知道我需要对Value和Reference模板参数使用MyHandle。因此,迭代器声明如下所示:
class MyIterator
: public boost::iterator_facade<
MyIterator
, MyHandle
, boost::forward_traversal_tag
, MyHandle
>这是做这种事情的唯一方法吗?或者有没有更好的方法来为合成数据创建迭代器?此外,boost::forward_traversal_tag似乎没有很好地传达数据的人工效果,代码是否应该使用不同的迭代器标记?
发布于 2011-10-22 03:25:00
boost::function_input_iterator将生成器函数包装在迭代器中。取消引用迭代器将调用函数并返回其结果:
http://www.boost.org/doc/libs/1_47_0/libs/iterator/doc/function_input_iterator.html
https://stackoverflow.com/questions/7846753
复制相似问题