C ++ итератор и обратный итератор
Я пишуiterator
(на самом деле этоconst_iterator
для моего текущего объекта, и я хочу также создатьreverse_const_iterator
также.
Я оглянулся вокруг, чтобы увидеть, как это сделать, и наткнулся наэто:
Однако обратите внимание, что при обращении итератора обращенная версия указывает не на тот же элемент в диапазоне, а на предыдущий. Это так, чтобы упорядочить элемент «конец конца» в диапазоне: итератор, указывающий на элемент «конец конца» в диапазоне, при обращении изменяется на указатель на последний элемент (а не после него) ) диапазона (это был бы первый элемент диапазона, если обратить вспять). И если итератор первого элемента в диапазоне обращен, обратный итератор указывает на элемент перед первым элементом (это будет элемент конца диапазона в случае обращения).
Это то, что происходит с точки зрения пользователей, или когда вы разыменовываетеreverse_iterator
разве это не абстрагирует это, давая вам значение / ссылку на объект, который выдумать это указывает на? Это просто детали реализации?
Мое понимание было:
for(i = obj.rbegin(); i != obj.rend(); i++)
был эквивалентен
for(i = obj.begin(); i != obj.end(); i++)
кроме как в обратном порядке. И так*i
будет идти назад через контейнер в первом случае, и идти вперед через контейнер во втором случае. Мой инстинкт верен?