场景
std::vector
里有rbegin()
和rend()
反转枚举迭代器,我们可以通过这个反转枚举std::vector<T>::reverse_iterator
进行倒序迭代,问题是当使用反转枚举时如果有需要删除的元素怎么办?vector.erase()
方法的参数只能是索引枚举std::vector<T>::iterator
,不能是反转枚举。
说明
-
索引枚举和反转枚举是存在下标对应关系
-
如图1. 反转枚举整体向右平移一个元素,它左边第一元素就是
.rend()
. 通过reverse_iterator.base()
对应的iterator
是图1所示的垂直对应的。图1:
-
反转枚举转换为索引枚举通过调用
rite.base()
获得索引枚举;而创建反转枚举需要索引枚举作为参数vector<int>::reverse_iterator(ite)
-