Cóż, wiem dlaczego, ponieważ nie ma konwersji, ale dlaczego nie ma konwersji? Dlaczego można przekazywać iteratory na odwrotne iteratory, ale nie na odwrót? I co ważniejsze, co mogę zrobić, jeśli chcę to zrobić? Czy jest jakiś adapter, który pozwala na iterację wstecz za pomocą iteratora do przodu?Dlaczego nie mogę przekonwertować odwrotnego iteratora na kolejny iterator?
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
Jest konwersja: 'backward.base();' – ybungalobill
Jestem całkiem pewien, że można użyć 'reverse_iterator 'gdzie jest to konieczne, przekazując typ iteratora jako argument szablonu wszędzie tam, gdzie używasz' iteratora'. Czy to nie rozwiązuje twojego problemu? – Grozz
Masz całkowitą rację ybungalobill; mój rzeczywisty kod jest nieco bardziej skomplikowany niż to i próbowałem base(), ale dało mi to błędy, więc zrezygnowałem z tego i mój mózg wymazał moją wiedzę na ten temat. Dzięki! Jeśli dodasz ten dokładny tekst jako odpowiedź, zaakceptuję to, ponieważ tak naprawdę * jest * odpowiedzią. –