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>