Если вам нужно перебрать элементы контейнера в обратном порядке, вам не обязательно использовать обратный итератор.
Если контейнер имеет двунаправленные итераторы, то вы можете использовать обычные итераторы и использовать --it
для итерации от end()
до begin()
вместо использования ++it
для итерации от begin()
до end()
,
Поскольку это немного сложно, вы можете использовать оболочку std::reverse_iterator
для преобразования обычного итератора в обратный итератор (в основном это заменяет ++
и --
и инкапсулирует хитрость, необходимую для получения этогоwork).
Если у контейнера нет двунаправленных итераторов, это означает, что невозможно перебирать элементы контейнера в обратном порядке, и в этом случае вам потребуется либо переписать свой алгоритм, либо использоватьдругой контейнер.
Любой контейнер, имеющий двунаправленные итераторы, он должен обеспечивать функциональность обратного итератора;это является частью концепции «Контейнер» стандартной библиотеки STL и C ++.