[C/C++标准库]_[初级]_[删除反转枚举reverse_iterator详解]

场景

  1. std::vector里有rbegin()rend()反转枚举迭代器,我们可以通过这个反转枚举std::vector<T>::reverse_iterator进行倒序迭代,问题是当使用反转枚举时如果有需要删除的元素怎么办?vector.erase()方法的参数只能是索引枚举std::vector<T>::iterator,不能是反转枚举。

说明

  1. 索引枚举和反转枚举是存在下标对应关系

    • 如图1. 反转枚举整体向右平移一个元素,它左边第一元素就是.rend(). 通过reverse_iterator.base()对应的iterator是图1所示的垂直对应的。

      图1:

    • 反转枚举转换为索引枚举通过调用rite.base()获得索引枚举;而创建反转枚举需要索引枚举作为参数vector<int>::reverse_iterator(ite)

  2. 索引枚举和反转枚举对应的元素转换关系:

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 创作都市 设计师:CSDN官方博客 返回首页
实付 9.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值