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;
		}
	};
相关推荐
Book思议-20 分钟前
【数据结构考研真题】链表题
c语言·数据结构·算法·链表·408·计算机考研
夏日听雨眠1 小时前
数据结构(单循环链表)
数据结构·链表
alphaTao1 小时前
LeetCode 每日一题 2026/3/16-2026/3/22
linux·windows·leetcode
阿昭L1 小时前
说说VirtualAlloc的第三个参数
windows
爱喝一杯白开水2 小时前
Java List 常用方法全攻略
java·list·排序算法
翱翔的苍鹰2 小时前
什么是 Deep Agents?
人工智能·windows·语言模型·自然语言处理·langchain·开源
Book思议-2 小时前
【数据结构实战】双向链表:删除节点
c语言·数据结构·算法·链表
今夕资源网5 小时前
windows11无法启用投屏功能 无线显示器无法添加可选功能 解决办法 Miracast修复脚本
windows·计算机外设·miracast·系统修复·无线显示器·投屏功能·投屏功能无法添加
罗超驿11 小时前
独立实现双向链表_LinkedList
java·数据结构·链表·linkedlist
内卷焦虑人士14 小时前
Windows安装WSL2+Ubuntu 22.04
linux·windows·ubuntu