迭代器的本質:對象。
迭代器與指針類似,通過迭代器可以指向容器中的某個元素,還可以對元素進行操作。
迭代器統一規范了遍歷方式。不同的數據結構可以用統一的方式去遍歷。
接下來是一個自定義迭代器的代碼示例。
#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;
}