C++ STL反向迭代器是如何实现的?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1119个文字,预计阅读时间需要5分钟。
反向迭代器实际上是对正向迭代器进行封装,用于实现运算符的结果不同。正向迭代器对原生生成器进行了封装,为了实现运算符的结果不同,正向迭代器也对原生生成器进行了封装。反向迭代器的适配器,即+Iterator,是哪个容器的迭代器?
反向迭代器其实就行对正向迭代器进行封装,源生迭代器,为了实现运算符的结果不同,正向迭代器也对源生迭代器进行了封装。
反向迭代器的适配器,就是 Iterator是哪个容器的迭代器,reverse_iterator < Iterator >就可以 适配出哪个容器的反向迭代器。复用的体现。
反向迭代器适配器结构:
template <class Iterator, class Ref, class Ptr> class reverse_iterator { typedef reverse_iterator<Iterator, Ref, Ptr> self; public: // 重载运算符函数 private: Iterator _it; };
源码容器获取迭代器时具体情况,如图:
我们以为的情况:
这是源码里的实现的大概情况,begin()与rend()对称,end()与rbegin()对称。这与我们想的不一样,所以反向迭代器适配器内部实现的也有所不一样。
本文共计1119个文字,预计阅读时间需要5分钟。
反向迭代器实际上是对正向迭代器进行封装,用于实现运算符的结果不同。正向迭代器对原生生成器进行了封装,为了实现运算符的结果不同,正向迭代器也对原生生成器进行了封装。反向迭代器的适配器,即+Iterator,是哪个容器的迭代器?
反向迭代器其实就行对正向迭代器进行封装,源生迭代器,为了实现运算符的结果不同,正向迭代器也对源生迭代器进行了封装。
反向迭代器的适配器,就是 Iterator是哪个容器的迭代器,reverse_iterator < Iterator >就可以 适配出哪个容器的反向迭代器。复用的体现。
反向迭代器适配器结构:
template <class Iterator, class Ref, class Ptr> class reverse_iterator { typedef reverse_iterator<Iterator, Ref, Ptr> self; public: // 重载运算符函数 private: Iterator _it; };
源码容器获取迭代器时具体情况,如图:
我们以为的情况:
这是源码里的实现的大概情况,begin()与rend()对称,end()与rbegin()对称。这与我们想的不一样,所以反向迭代器适配器内部实现的也有所不一样。

