>我正在尝试使用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::advance
或 std::next
。这样:
std::next(l.rbegin(), input[j])