C++:迭代器

迭代器的本质:对象。

迭代器与指针类似,通过迭代器可以指向容器中的某个元素,还可以对元素进行操作。

迭代器统一规范了遍历方式。不同的数据结构可以用统一的方式去遍历。

接下来是一个自定义迭代器的代码示例。

cpp 复制代码
#include<iostream>
using namespace std;

struct List
{
	int n;
	List* pnext;
};

void AddNode(List*& rpHead, List*& rpEnd, int n)
{
	List* ptemp = new List;
	ptemp->n = n;
	ptemp->pnext = NULL;
	if (NULL == rpHead)
	{
		rpHead = ptemp;
	}
	else
	{
		rpEnd->pnext = ptemp;
	}
	rpEnd = ptemp;
}

class Iterator//自定义的一个迭代器
{
private:
	List* p;
public:
	Iterator(List* p)
	{
		this->p = p;
	}
public:
	bool operator != (List* p)
	{
		if (this->p != p)
		{
			return true;
		}
		else
		{
			return false;
		}
	}
	int operator*()
	{
		return p->n;
	}
	List* operator++(int)
	{
		List* pTemp = p;
		p = p->pnext;
		return pTemp;
	}
};
int main()
{
	List* pHead = NULL;
	List* pEnd = NULL;

	AddNode(pHead, pEnd, 1);
	AddNode(pHead, pEnd, 2);
	AddNode(pHead, pEnd, 3);
	AddNode(pHead, pEnd, 4);

	/*while (pHead != NULL)//原本的链表遍历方式
	{
		cout << pHead->n << endl;
		pHead = pHead->pnext;
	}*/

	Iterator ite = pHead;
	while (ite != NULL)
	{
		cout << *ite << endl;
		ite++;
	}

	return 0;
}
相关推荐
MessiGo6 小时前
Javascript 编程基础(5)面向对象 | 5.2、原型系统
开发语言·javascript·原型模式
机器视觉知识推荐、就业指导7 小时前
C++/Qt 联合编程中的定时器使用陷阱:QObject::startTimer 报错详解
c++·qt
慢半拍iii7 小时前
数据结构——D/串
c语言·开发语言·数据结构·c++
怀旧,7 小时前
【数据结构】5. 双向链表
数据结构·windows·链表
拄杖忙学轻声码7 小时前
windows电脑解决笔记本搜索不到wifi问题
windows·电脑
waterHBO7 小时前
Cursor 编辑器, 使用技巧,简单记录一下
windows·编辑器
邪恶的贝利亚7 小时前
从基础到实战-rmpt to webrtc
c++·webrtc·rtmp·流媒体
爱学习的白杨树7 小时前
Sentinel介绍
java·开发语言
Frankabcdefgh8 小时前
Python基础数据类型与运算符全面解析
开发语言·数据结构·python·面试
kaiaaaa8 小时前
算法训练第十五天
开发语言·python·算法