C ++:迭代器适配器在一系列迭代器中绑定迭代器?

时间:2014-08-20 16:06:35

标签: c++ boost stl iterator adaptor

假设我有两个迭代器,它们跨越整个类似stl的容器或其连续的部分,从而定义一个范围。这对迭代器是不可变的。然后我想有一个第三个可变迭代器,它将指向作为范围一部分的任何元素。 这导致我有一个适配器,例如(元代码):

Adaptor<Iterator>:
==================
   + Iterator: begin
   + Iterator: end
   + Iterator: current

如果current==begin,则std::prev(adaptor)不会更改current,仍然等于begin 如果current==end,则std::next(adaptor)不会更改current,但仍然等于end

我试图在STL和Boost中找到现成的解决方案,但到目前为止(可能是我的词汇/行话限制)我找不到任何解决方案。 我应该自己从头开始实现这样的适配器,还是我错过了一些stl / boost好吃的东西? 感谢。

1 个答案:

答案 0 :(得分:0)

将其作为迭代器实现它是不可能的。对于std::prev/next来说,它必须是一个&#34;双向迭代器&#34; (在满足&#34;双向迭代器&#34;模型的所有要求的意义上)。其中一项要求是&#34; --r == --s暗示r == s。&#34;但是,当然,对于两个这样的迭代器,如果一个在begin之后,而另一个在begin之后,则不会成立。