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

本文介绍了在C/C++中如何在使用反转枚举(reverse_iterator)时删除元素。由于`erase`方法需要索引枚举作为参数,文章详细阐述了索引枚举与反转枚举之间的转换关系,并提供了一个例子来说明如何正确删除反转枚举所指向的元素。
摘要由CSDN通过智能技术生成

场景

  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)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Peter(阿斯拉达)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值