Ну, я знаю, почему, это потому, что нет конверсии, но почему нет конверсии? Почему переадресация итераторов может быть повернута на обратные итераторы, но не наоборот? И что еще более важно, что я могу сделать, если я хочу это сделать? Есть ли какой-нибудь адаптер, который позволяет вам перебирать назад с помощью передового итератора?Почему я не могу преобразовать обратный итератор в форвардный итератор?
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
Существует преобразование: `backward.base();` – ybungalobill 2010-12-10 10:42:00
Я уверен, что вы можете использовать `reverse_iterator `где необходимо, передавая тип итератора в качестве аргумента шаблона везде, где вы используете` iterator`. Разве это не решает вашу проблему? – Grozz 2010-12-10 10:45:30
Вы абсолютно правы ybungalobill; мой фактический код немного сложнее этого, и я попробовал base(), но он дал мне ошибки, поэтому я сдался, и мой мозг стерли мои знания об этом. Благодаря! Если вы добавите этот точный текст в качестве ответа, я соглашусь с ним, так как действительно это * * ответ. – 2010-12-10 11:00:01