list双向链表迭代器的实现

cpp 复制代码
// typedef __list_iterator<T, T&, T*> iterator;
	// typedef __list_iterator<T, const T&, const T*> const_iterator;
	template<class T, class Ref, class Ptr>
	struct __list_iterator
	{
		typedef list_node<T> Node;
		typedef __list_iterator<T, Ref, Ptr> self;
		Node* _node;

		__list_iterator(Node* node)
			:_node(node)
		{}

		Ref operator*()
		{
			return _node->_val;
		}

		Ptr operator->()
		{
			return &_node->_val;
		}

		self& operator++()
		{
			_node = _node->_next;
			return *this;
		}

		self operator++(int)
		{
			self tmp(*this);

			_node = _node->_next;

			return tmp;
		}

		self& operator--()
		{
			_node = _node->_prev;
			return *this;
		}

		self operator--(int)
		{
			self tmp(*this);

			_node = _node->_prev;

			return tmp;
		}

		bool operator!=(const self& it) const
		{
			return _node != it._node;
		}

		bool operator==(const self& it) const
		{
			return _node == it._node;
		}
	};
相关推荐
1白天的黑夜14 小时前
链表-25.k个一组翻转链表-力扣(LeetCode)
数据结构·leetcode·链表
Univin18 小时前
8.25作业
数据结构·windows
徐子元竟然被占了!!19 小时前
Windows Server 2019 DateCenter搭建 FTP 服务器
运维·服务器·windows
winkel_wang19 小时前
身份管理与安全 (Protect identities)
windows·安全
正经教主19 小时前
[特殊字符]Windows 资源监视器使用指南:查端口以后不用敲命令了
windows
重启的码农1 天前
Windows虚拟显示器MttVDD源码分析 (6) 高级色彩与HDR管理
c++·windows·操作系统
CHEN5_021 天前
【Java集合】List,Map,Set-详细讲解
java·windows·list
专注VB编程开发20年1 天前
.NET组件读取压缩包中的内存数据电子表格XLSX文件和图片,不需要解压
linux·服务器·windows·c#·.net·excel·zip
XMZH030421 天前
数据结构:链式队列尝试;0826
数据结构·链表·队列·链式队列
SJjiemo1 天前
FileMenu Tools for Win:突破 Windows 文件管理困境的利器
windows