如何使用difference_type按任何值增加/减少reverse_iterator

How to increase/decrease reverse_iterator by any value using difference_type

本文关键字:减少 reverse iterator 增加 何使用 difference type 任何值      更新时间:2023-10-16

>我正在尝试使用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); }

我需要从该列表的背面/末尾开始删除特定项目。这仅用于优化或降低时间复杂度。

只有随机访问迭代器支持 operator+ 。列表迭代器不是随机访问迭代器。要推进非随机访问迭代器,可以使用 std::advancestd::next 。这样:

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