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;
}
相关推荐
EnigmaCoder2 分钟前
Java异常处理全解析:从基础到自定义
java·开发语言
Sean_summer4 分钟前
PHP伪随机数
开发语言·php
WiKiLeaks_successor6 分钟前
error: forming reference to void
c++
shylyly_8 分钟前
智能指针RAII
开发语言·c++·内存泄漏·智能指针·weak_ptr·rall·share_ptr
潇-xiao2 小时前
Qt enabled + geometry 属性(2)
c++·笔记·qt
m0_555762902 小时前
qt浏览文件支持惯性
开发语言·qt
LaoWaiHang3 小时前
MFC 捕捉桌面存成jpg案例代码
c++·mfc
mxway3 小时前
八、实现编辑框控件
c++·x11·linux gui·自绘控件·自绘制编辑框控件·utf8字符集编码·文本输入
互联网行者4 小时前
java云原生实战之graalvm 环境安装
java·开发语言·云原生
liuzhangfeiabc7 小时前
[luogu12541] [APIO2025] Hack! - 交互 - 构造 - 数论 - BSGS
c++·算法·题解