c++--反向迭代器的实现

1.反向迭代器

迭代器有两种,一种是正向的,一种是反向的,方向迭代器的主要功能就是实现数据的反向访问,通过正向迭代器的适配生成的,适配器就是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结),该种模式是将一个类的接口转换成客户希望的另外一个接口。

2.反向迭代器的原理

反向迭代器就是通过正向迭代器的适配构成的,所以反向迭代器的++就是正向迭代器的--,反向迭代器的--就是正向迭代器的++。

c++--反向迭代器的实现_第1张图片

 3.反向迭代器实现

namespace sss
{
	template  
	struct reverse_iterator
	{
		iterator _it;
		typedef template self;
		reverse_iterator(iterator& it)
			:_it(it)
		{
			;
		}
		//*的重载
		Ref operator*()
		{
			iterator tmp = _it;
			return *--tmp;
		}
		//->重载
		Ptr operator->()
		{
			return &(operator*());
		}
		//前置++重载
		self& operator++()
		{
			--_it;
			return *this;
		}
		//后置++重载
		self& operator++(int)
		{
			iterator tmp = _it;
			--tmp;
			return tmp;
		}
		//前置--重载
		self& operator--()
		{
			++_it;
			return *this;
		}
		//后置--重载
		self& operator--(int)
		{
			iterator tmp = _it;
			++tmp;
			return tmp;
		}
		//==重载
		bool operator==(const itrtator& S)
		{
			return _it == S._it;
		}
		//!=重载
		bool operator!=(const itrtator& S)
		{
			return _it != S._it;
		}

	};
//通过正向迭代器的适配,生成反向迭代器
//实现一个正向迭代器来完成
	typedef reverse_iterator reverse_iterator;
	typedef reverse_iterator const_reverse_iterator;


	reverse_iterator rbegin()
	{
		return reverse_iterator(end());
	}

	const_reverse_iterator rbegin()
	{
		return reverse_iterator(end());
	}

	reverse_iterator rend()
	{
		return reverse_iterator(rbegin());

	}
	const_reverse_iterator rend()
	{
		return reverse_iterator(rbegin());

	}
}

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