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;
}
相关推荐
玄同76513 分钟前
从 0 到 1:用 Python 开发 MCP 工具,让 AI 智能体拥有 “超能力”
开发语言·人工智能·python·agent·ai编程·mcp·trae
czy878747515 分钟前
深入了解 C++ 中的 `std::bind` 函数
开发语言·c++
消失的旧时光-194319 分钟前
从 Kotlin 到 Dart:为什么 sealed 是处理「多种返回结果」的最佳方式?
android·开发语言·flutter·架构·kotlin·sealed
yq19820430115620 分钟前
静思书屋:基于Java Web技术栈构建高性能图书信息平台实践
java·开发语言·前端
一个public的class21 分钟前
你在浏览器输入一个网址,到底发生了什么?
java·开发语言·javascript
Jinkxs23 分钟前
Gradle - 与Groovy/Kotlin DSL对比 构建脚本语言选择指南
android·开发语言·kotlin
&有梦想的咸鱼&24 分钟前
Kotlin委托机制的底层实现深度解析(74)
android·开发语言·kotlin
我在人间贩卖青春24 分钟前
C++之继承的方式
c++·private·public·protected·继承方式
开开心心就好35 分钟前
发票合并打印工具,多页布局设置实时预览
linux·运维·服务器·windows·pdf·harmonyos·1024程序员节
獨枭43 分钟前
PyCharm 跑通 SAM 全流程实战
windows