У меня есть следующий код:значения итератора отличается от обратного значения итератора после преобразования
int main()
{
vector<int> v;
for(int i = 0; i < 10; ++i)
v.push_back(i);
auto it = v.begin() + 3;
cout << "Iterator: " << *it << endl;
vector<int>::reverse_iterator revIt(it);
cout << "Reverse iterator: " << *revIt << endl;
}
После выполнения этого кода я получаю следующий результат:
Iterator: 3
Reverse iterator: 2
Может кто-нибудь объяснить, почему 2 значения отличаются ?
Я не уверен на 100%, но итератор вперед будет смотреть вперед, тогда как обратный итератор будет оглядываться назад. 'v = {1, 2, * 3, 4 ...}' где * - итераторная позиция обоих из них. Посмотрите, в каком направлении они идут. – chris
@chris: не совсем: или лучше, так как java определяет итераторы (указывая «между ними»). C++ имеет другую концепцию. Но практический результат также соответствует вашему объяснению. Но это следствие, а не определение. –
@EmilioGaravaglia, спасибо, что расчистили его. Я не очень хорошо знаком. – chris