gpt4 book ai didi

c++ - AnyIterator 和 boost 迭代器外观

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:02:56 26 4
gpt4 key购买 nike

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

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

还是我必须完全从头开始写一个;

最佳答案

您发布的代码修复了从 Base 返回的迭代器类型及其对 std::vector<int>::iterator 的所有实现这可能不是你想要的。 Jeremiah 的建议是解决一个缺点的一种方法:你失去了与 STL 的兼容性......我知道多态迭代器包装器的三种实现:

  1. 贝克尔的 any_iterator (实现 boost::iterator_facade )
  2. opaque_iterator图书馆(谷歌),或
  3. Adobe 非常有趣的 poly 库,其中包含符合 any_iterator 的 STL 层次结构s.

这个问题比看起来更难...我自己尝试了主要是因为我需要 any_iterators 中的协方差类型参数( any_iterator<Derived> 应该自动转换为 any_iterator<Base> ),这很难像迭代器一样用 STL 干净地实现。像 Enumerator<T> 这样的 C#更容易实现(*)(恕我直言,这通常是一个比类似 STL 的迭代器对更清晰的概念)但同样,您“松开了”STL。

(*) = 当然没有“yield”:-)

关于c++ - AnyIterator 和 boost 迭代器外观,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5081332/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com