Предположим, у меня есть два итератора, которые охватывают весь 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?
Благодарю.
Было бы невозможно реализовать это как итератор. За std::prev/next
чтобы работать над ним, он должен быть «двунаправленным итератором» (в смысле выполнения всех требований модели «двунаправленного итератора»). Одним из таких требований является «--r == --s
подразумевает r == s
«Но, конечно, это не было бы верно для двух таких итераторов, если один был сразу после begin
а другой был в begin
,