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;
		}
	};
相关推荐
YJlio31 分钟前
LDMDump 学习笔记(13.9):动态磁盘元数据“黑盒”拆解工具
windows·笔记·学习
seasonsyy1 小时前
恢复桌面“此电脑”图标(Win10)
windows
深耕AI1 小时前
【Docker Desktop for Windows】 两个 volumes 目录的区别
windows·docker·容器
不一样的故事1261 小时前
通常意味着Windows系统与该打印机的通信或驱动程
windows
fengye2071612 小时前
win10+VM17+虚拟机win10搭建(四)
windows
Secede.14 小时前
Windows + WSL2 + Docker + CudaToolkit:深度学习环境配置
windows·深度学习·docker
禾叙_15 小时前
【ollama】同一WiFi下Mac访问Windows Ollama失败?完整调试指南(从Connection refused到成功连通)
windows·macos
悟能不能悟16 小时前
list<string> 和String[],转化为jsonstr是不是一样的
数据结构·windows·list
请为小H留灯17 小时前
Windows 系统启用 Telnet 客户端:图文详细教程
网络·windows·测试·telnet
iAkuya17 小时前
(leetcode)力扣100 27合并两个有序链表(迭代/递归)
算法·leetcode·链表