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;
		}
	};
相关推荐
亮子AI3 小时前
【Tiptap】如何使用 ordered list?
数据结构·list·tiptap
武藤一雄4 小时前
C#:Linq大赏
windows·后端·microsoft·c#·.net·.netcore·linq
ULTRA??4 小时前
C++数据结构的链表实现模拟
c++·链表
少许极端6 小时前
Redis入门指南:从零到分布式缓存-hash与list类型
redis·分布式·缓存·list·hash
AI云原生6 小时前
openEuler软件生态体验——从桌面到服务器的全方位探索
运维·服务器·windows·macos·docker·云计算·腾讯云
JosieBook6 小时前
【IDEA】IntelliJ IDEA 快捷键大全(Windows/Linux 版)
linux·windows·intellij-idea
学习研习社6 小时前
如何在 Windows 上恢复已删除/未保存的 Excel 文件 - 5 种快速方法
windows·excel
HelloRevit7 小时前
cfapi 入门实战(二):实现云文件回传
windows
cheniie7 小时前
Windows网络共享指南
windows·ics·网络共享
今天你TLE了吗8 小时前
LeeCode Hot100随机链表的复制 java易懂题解
java·数据结构·链表