boost — C ++: адаптер итератора, ограничивающий итератор в диапазоне итераторов?

Предположим, у меня есть два итератора, которые охватывают весь 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

Решение

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

0

Другие решения


По вопросам рекламы [email protected]