1

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

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

if current==beginthenstd::prev(adaptor)不变但current仍等于begin if current==endthenstd::next(adaptor)不变current且仍等于end

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

4

1 回答 1

0

不可能将其实现为迭代器。要std::prev/next对其进行处理,它必须是“双向迭代器”(在满足“双向迭代器”模型的所有要求的意义上)。这些要求之一是“--r == --s暗示r == s”。但是,当然,对于两个这样的迭代器来说,如果一个是紧随其后begin而另一个是 at ,那么这将是不正确的begin

于 2014-08-20T16:58:55.497 回答