AnyIterator和boost迭代器外观

P3t*_*rus 5 c++ iterator any

是否可以使用boost迭代器外观实现任何迭代器?我不想在我的基类中定义实现细节

class Base
{
public:
typedef std::vector<int>::iterator iterator;//implementation detail
...
virtual iterator begin()=0;
virtual iterator end()=0;
};
Run Code Online (Sandbox Code Playgroud)

或者我必须从头开始写一个;

Pau*_*lik 9

您发布的代码已经修复了从中返回的迭代器的类型Base以及它std::vector<int>::iterator可能不是您想要的所有实现.Jeremiah的建议是一种方法,有一个缺点:你松散与STL的兼容性......我知道三个多态迭代器包装器的实现:

  1. 贝克尔any_iterator(实施boost::iterator_facade)
  2. opaque_iterator库(谷歌它),或
  3. Adobe非常有趣的poly库,它包含符合STL标准any_iterator的层次结构.

问题是难度比它看起来......我做了一个尝试自己主要是因为我需要协方差any_iterators类型参数(any_iterator<Derived>应该是自动转换为any_iterator<Base>),这是很难与像迭代器STL简洁地实现.AC#like Enumerator<T>更容易实现(*)(并且imho通常比类似STL的迭代器对更简洁)但同样,你"松散"STL.

(*)=当然没有'收益':-)