Как увеличить / уменьшить reverse_iterator на любое значение, используя diff_type - PullRequest
0 голосов
/ 31 марта 2019

Я пытаюсь стереть определенный элемент списка из обратной позиции, используя reverse_iterator. Но в заголовочном файле stl_iterator.h произошла ошибка компиляции.

Я пытаюсь сделать ...

здесь input [] - это целочисленный массив.

 list<int>:: reverse_iterator it = l.rbegin()+ input[j];
                    l.erase( std::next(it).base() );

ошибка, отображаемая в файле stl_iterator.h ...

 reverse_iterator
      operator+(difference_type __n) const
      { return reverse_iterator(current - __n); }

Мне нужно стереть определенный элемент, начиная сиз конца / конца этого списка. Это только для оптимизации или для уменьшения временной сложности.

1 Ответ

0 голосов
/ 31 марта 2019

Только итераторы с произвольным доступом поддерживают operator+. Итератор списка не является итератором произвольного доступа. Чтобы продвинуть итератор без произвольного доступа, вы можете использовать std::advance или std::next. Вот так:

std::next(l.rbegin(), input[j])
...