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

时间:2019-03-31 13:25:55

标签: c++ reverse-iterator

我正在尝试使用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 :(得分:0)

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

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