【问题标题】:STL iterator wrapperSTL 迭代器包装器
【发布时间】:2011-06-14 18:39:05
【问题描述】:

我想为 STL 迭代器编写包装器。 它应该只改变某些方法的行为...

我是这样看的:

template<***>
class custom_iterator : public ***
{
    T & iter;

public:
    custom_iterator(T & iter) : iter(iter) {}

    // for example, behaviour that increments value
    T_val operator * () { return (*iter)+1; } 
};

如何为所有类型的迭代器制作它?我的意思是:

  • 输入迭代器
  • 输出迭代器
  • 前向迭代器
  • 双向迭代器
  • 随机访问迭代器

这怎么可能?

【问题讨论】:

  • 这应该达到什么目的?您不能像 STL 算法那样在迭代器类型上模板化您的应用程序吗?然后,如果需要,您可以使用迭代器特征来访问迭代器的细节......
  • 这不是问题。 OP应该首先学会提问。
  • Nawaz,为什么不是问题?我找不到如何制作“STL 迭代器包装器”。包装器我的意思是模式包装器,遵循接口和委托调用。什么是 OP?
  • @Nawaz:我在文本中检测到至少一个问号,这似乎表明这是一个问题。可能不是最好的,因为它缺少要解决的问题,但并不比 SO 中的许多其他问题差...
  • @David:让我重新表述一下我的评论:这不是一个有意义的问题。 OP 应该首先学会提出有意义的问题。

标签: c++ templates stl iterator wrapper


【解决方案1】:

看看boost::transform_iterator。我想这就是你想要达到的目的。

Source code

【讨论】:

  • 我不能使用它,因为我想改变迭代器的引用类型。但是我可以按照这个源代码使我的迭代器类似于 boost::transform_iterator。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-03
  • 2013-03-07
  • 2013-04-16
  • 1970-01-01
  • 1970-01-01
  • 2012-03-16
相关资源
最近更新 更多