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;
		}
	};
相关推荐
Mcworld85715 分钟前
java集合
java·开发语言·windows
hnlucky44 分钟前
windows编写和调试代码工具——IDE安装
ide·windows
大强同学2 小时前
Adobe DC 2025安装教程
windows·adobe·pdf
python1563 小时前
使用Langfuse和RAGAS,搭建高可靠RAG应用
人工智能·windows·python
QQ_4376643143 小时前
单向循环链表C语言实现实现(全)
数据结构·windows·链表
ptu小鹏3 小时前
list重点接口及模拟实现
数据结构·c++·list
CodeBlossom3 小时前
java加强 -stream流
java·windows·python
humors2215 小时前
Windows运维工具批处理版
运维·windows·计算机·电脑·笔记本·维护·台式机
hnlucky6 小时前
Windows 上安装下载并配置 Apache Maven
java·hadoop·windows·学习·maven·apache
洛阳泰山7 小时前
Windows系统部署MongoDB数据库图文教程
数据库·windows·mongodb