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;
		}
	};
相关推荐
ths5121 小时前
doris 中 array_agg函数用法总结
windows
csdn2015_1 小时前
springboot controller 参数可以是List吗
spring boot·后端·list
de_wizard1 小时前
DeepSeek API 调用 - Spring Boot 实现
windows·spring boot·后端
小学鸡!1 小时前
win10/win11下载安装Docker,Windows安装Docker Desktop 【保姆级教程】
windows·docker·容器
夜星辰20232 小时前
在 Ubuntu 里创建 Docker 容器,与在 Windows 上安装 VMware Workstation Pro 虚拟机的区别
windows·ubuntu·docker
DowneyJoy2 小时前
【Unity3D补充知识点】常用数据结构分析-集合(List<T>)
数据结构·unity·c#·list
姜太小白2 小时前
【其他】QEMU 在 Windows 和 CentOS 7 下安装及运行 ARM 操作系统指南
arm开发·windows·centos
副露のmagic2 小时前
链表章节 leetcode 思路&实现
数据结构·leetcode·链表
Dr.F.Arthur2 小时前
我的算法学习笔记——链表篇
数据结构·笔记·学习·链表
私人珍藏库3 小时前
[Windows] 央视影音v6.0.4.1绿色版
windows·工具·软件·影音·多功能