迭代器的本质:对象。
迭代器与指针类似,通过迭代器可以指向容器中的某个元素,还可以对元素进行操作。
迭代器统一规范了遍历方式。不同的数据结构可以用统一的方式去遍历。
接下来是一个自定义迭代器的代码示例。
#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;
}