0

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

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

4

1 回答 1

1

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

std::next(l.rbegin(), input[j])
于 2019-03-31T14:20:50.933 回答