C++反向迭代器的原理+模拟实现+萃取

本文介绍了C++中反向迭代器的工作原理,通过模拟实现阐述其如何在不同容器如list和vector中使用。反向迭代器通过重载操作符实现与正向迭代器相反的行为,如`++`和`--`。萃取技术用于在迭代器模板参数只有一个的情况下获取所需类型,例如值类型和指针类型。虽然萃取在某些情况下增加了复杂性,但在STL中使用单个模板参数和萃取有特定考量,但自定义实现时,使用三个模板参数可能更为便捷。
摘要由CSDN通过智能技术生成

反向迭代器实际上就是在正向迭代器的基础上将其转换一下就变成了反向的,里面会传一个迭代器模板,这个模板随便是谁的迭代器模板,可以是list的,vector的等等,其只要有一个模板,引用了正向迭代器,其他SLT类型都可以用这个反向迭代器,这也是类型的力量,泛型就是这么强大。

反向迭代器的模拟实现

反向迭代器需要传一个迭代器模板,因为什么类型都可以用这个反向迭代器,包括list,vector等等这些。而他的成员函数就是一个迭代器类型的容器。而它不需要拷贝构造,赋值重载,直接用自己生成的,因为迭代器指针只是指向一块已经存在的空间,他的赋值和构造都是浅拷贝。

template<class Iterator>//可以是任意类型的迭代器--适配器模式
class reverse_iterator
{
    public:
        reverse_iterator()
			:_it(it)
        {}
    private:
        Iterator _it;//指针类型的迭代器变量
}

反向迭代器和正向迭代器实现的功能一样,需要解引用,!=,++等这些函数,我们一一实现

【解引用*和->】

operator*取前一个位置,主要就是为了让反向迭代器的开始和结束跟正向迭代器对称

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值