【C++】反向迭代器

目录

一、反向迭代器介绍

二、反向迭代器模拟实现


一、反向迭代器介绍

【C++】反向迭代器_第1张图片

 反向迭代器是正向迭代器的适配器模式,在反向迭代器内部封装了正向迭代器。

二、反向迭代器模拟实现

反向迭代器模拟实现代码如下:

namespace bin
{
	template
	struct ReverseIterator
	{
		typedef ReverseIterator self;
		Iterator _cur; 

		ReverseIterator(Iterator it)
			:_cur(it)
		{}

		Ref operator*()
		{
			Iterator tmp = _cur;
			--tmp;
			return *tmp;
		}

		self& operator++()
		{
			--_cur;
			return *this;
		}

		self& operator--()
		{
			++_cur;
			return *this;
		}

		bool operator!=(const self& s)
		{
			return _cur != s._cur;
		}
	};
}

 反向迭代器作为正向迭代器的适配器模式使用,反向迭代器的 "++" 对应正向迭代器的 "--" ,反向迭代器的 "--" 对应正向迭代器的 "++"

 关于正向迭代器模拟实现部分的内容,可以参考文章《list的使用与模拟实现》。

【C++】反向迭代器_第2张图片

 反向迭代器的这种实现方法的精髓在于,他作为一种正向迭代器的适配器模式,可以生产出任何容器的反向迭代器,只要正向迭代器可以正常工作,那么反向迭代器就能够正常的工作。

对标到库中的反向迭代器,为了对称性, rbegin 是通过返回 end 来实现的, rend 是通过返回   begin 来实现的:

【C++】反向迭代器_第3张图片


关于反向迭代器的内容就讲到这里,希望同学们多多支持,如果有不对的地方欢迎大佬指正,谢谢!

你可能感兴趣的:(C++,c++,开发语言)