C++ 在自定义迭代器之上使用boost迭代器适配器/facade

C++ 在自定义迭代器之上使用boost迭代器适配器/facade,c++,boost,iterator,C++,Boost,Iterator,我有一个定制的集合集合。一个自定义迭代器Iter在其上返回Obj*,一个对象包装器包装器: Collection c; // Collection initialization skipped here Iter it = c.getIter(); while (Obj* obj = it++) { Wrapper w(obj); w.doSomething(); } 我想创建一个类似STL的迭代器(既有迭代器又有常量迭代器,没有代码重复),使我的代码看起来像: for (Co

我有一个定制的集合
集合
。一个自定义迭代器
Iter
在其上返回
Obj*
,一个对象包装器
包装器

Collection c;
// Collection initialization skipped here
Iter it = c.getIter();
while (Obj* obj = it++) {
    Wrapper w(obj);
    w.doSomething();
}
我想创建一个类似STL的迭代器(既有
迭代器
又有
常量迭代器
,没有代码重复),使我的代码看起来像:

for (Collection::iterator it = c.begin(); it != c.end(); ++it) {
    it->doSomething();
}

如何使用boost迭代器适配器/外观来实现这一点

我认为我应该使用
boost::iterator\u facade

 ... : public boost::iterator_facade<Derived, Value, CategoryOrTraversal, Reference>
…:公共boost::迭代器外观

我的第一个问题是
Value
Reference
类型参数应该是什么
Reference
显然是
Wrapper
,因为它是迭代器取消引用的结果,但是
Value
是什么呢?

Boost的库肯定是这样的。你读过吗?您是否有部分实现?你在做什么?我现在正在做。想找一个能帮助我的例子。我浏览了文档,但没那么简单。你能在问题中再介绍一下你到目前为止做了些什么吗?现在,它非常接近于“请为我写代码”的帖子。比该类别中的大多数都要好,但仍然非常接近。或者至少解释一下你有什么具体问题。
 ... : public boost::iterator_facade<Derived, Value, CategoryOrTraversal, Reference>