嗯,我知道为什么,这是因为没有转换,但为什么没有转换?为什么可以将转发迭代器转向反向迭代器,而不是相反呢?更重要的是,如果我想这样做,我该怎么办?是否有一些适配器允许您使用前向迭代器向后迭代?为什么我不能将逆向迭代器转换为向前迭代器?
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