假设我有两个迭代器,它们跨越整个类似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好吃的东西? 感谢。
答案 0 :(得分:0)
将其作为迭代器实现它是不可能的。对于std::prev/next
来说,它必须是一个&#34;双向迭代器&#34; (在满足&#34;双向迭代器&#34;模型的所有要求的意义上)。其中一项要求是&#34; --r == --s
暗示r == s
。&#34;但是,当然,对于两个这样的迭代器,如果一个在begin
之后,而另一个在begin
之后,则不会成立。