泉州做网站优化多少钱合肥关键词排名提升
【C++模拟实现】反向迭代器的实现
目录
- 【C++模拟实现】反向迭代器的实现
- 反向迭代器的代码示例
- 反向迭代器的模拟实现要点
- 引入iterator模版参数
- rbegin()和rend()的实现
作者:爱写代码的刚子
时间:2023.9.5
前言:本篇博客主要介绍反向迭代器的实现,通过对正向迭代器的复用以及模版的使用来实现反向迭代器。
反向迭代器的代码示例
namespace test
{template<class iterator,class Ref,class Ptr>struct __reverse_iterator{typedef __reverse_iterator<iterator,Ref,Ptr> Self;iterator _it;//构造函数__reverse_iterator(iterator it):_it(it){}// 运算符重载Ref operator*(){iterator tmp(_it);return *(--tmp);}Ptr operator->(){return &(operator*());}Self& operator--(){++_it;return *this;}Self& operator++(){--_it;return *this;}bool operator!=(const Self& l) const{return _it!=l._it;}};
}
反向迭代器的模拟实现要点
引入iterator模版参数
引入iterator模版参数,与vector、list等容器的iterator实现基本相同,但是对it指针的处理相反。在使用模拟实现的reverse_iterator时需要传入对应的类型,并使用typedef。例:vector中:
rbegin()和rend()的实现
以vector举例:
注意函数名和传入参数的不同!在实现reverse_iterator时也要注意
由于reverse_iterator复用了iterator的部分逻辑,实现大体相同。(提供的示例代码中后置++和–的运算符重载没有提供实现)