Почему я не могу преобразовать обратный итератор в прямой итератор?

Я знаю почему, потому что нет преобразования, но почему нет преобразования? Почему прямые итераторы можно превратить в обратные итераторы, а не наоборот? И что еще более важно, что мне делать, если я хочу это сделать? Есть ли какой-нибудь адаптер, который позволяет выполнять итерацию в обратном направлении с помощью итератора вперед?

std::vector<int> buffer(10);
std::vector<int>::iterator forward = buffer.begin();
std::vector<int>::reverse_iterator backward = buffer.rbegin();
++forward;
++backward;
std::vector<int>::iterator forwardFromBackward = std::vector<int>::iterator(backward); // error! Can't convert from reverse_iterator to iterator!
std::vector<int>::reverse_iterator backwardFromForward = std::vector<int>::reverse_iterator(forward); // this is fine
11
задан Ben Hymers 10 December 2010 в 10:40
поделиться