當前位置:編程學習大全網 - 源碼下載 - 叠代器是什麽

叠代器是什麽

叠代器(iterator)有時又稱遊標(cursor)是程序設計的軟件設計模式,可在容器(container,例如鏈表或陣列)上遍訪的接口,設計人員無需關心容器的內容。

叠代器(iterator)是壹種對象,它能夠用來遍歷標準模板庫容器中的部分或全部元素,每個叠代器對象代表容器中的確定的地址。叠代器修改了常規指針的接口,所謂叠代器是壹種概念上的抽象:那些行為上像叠代器的東西都可以叫做叠代器。然而叠代器有很多不同的能力,它可以把抽象容器和通用算法有機的統壹起來。

叠代器提供壹些基本操作符:*、++、==、!=、=。這些操作和C/C++“操作array元素”時的指針接口壹致。不同之處在於,叠代器是個所謂的復雜的指針,具有遍歷復雜數據結構的能力。其下層運行機制取決於其所遍歷的數據結構。因此,每壹種容器型都必須提供自己的叠代器。事實上每壹種容器都將其叠代器以嵌套的方式定義於內部。因此各種叠代器的接口相同,型號卻不同。這直接導出了泛型程序設計的概念:所有操作行為都使用相同接口,雖然它們的型別不同。

功能

叠代器使開發人員能夠在類或結構中支持foreach叠代,而不必整個實現IEnumerable或者IEnumerator接口。只需提供壹個叠代器,即可遍歷類中的數據結構。當編譯器檢測到叠代器時,將自動生成IEnumerable接口或者IEnumerator接口的Current,MoveNext和Dispose方法。

特點

1.叠代器是可以返回相同類型值的有序序列的壹段代碼;

2.叠代器可用作方法、運算符或get訪問器的代碼體;

3.叠代器代碼使用yieldreturn語句依次返回每個元素,yield break將終止叠代;

4.可以在類中實現多個叠代器,每個叠代器都必須像任何類成員壹樣有惟壹的名稱,並且可以在foreach語句中被客戶端,代碼調用如下所示:foreach(int x in SimpleClass.Iterator2){};

5.叠代器的返回類型必須為IEnumerable和IEnumerator中的任意壹種;

6.叠代器是產生值的有序序列的壹個語句塊,不同於有壹個 或多個yield語句存在的常規語句塊;

7.叠代器不是壹種成員,它只是實現函數成員的方式,理解這壹點是很重要的,壹個通過叠代器實現的成員,可以被其他可能或不可能通過叠代器實現的成員覆蓋和重載;

8.叠代器塊在C#語法中不是獨特的元素,它們在幾個方面受到限制,並且主要作用在函數成員聲明的語義上,它們在語法上只是語句塊而已;

9.yield關鍵字用於指定返回的值。到達yieldreturn語句時,會保存當前位置。下次調用叠代器時將從此位置重新開始執行。 叠代器對集合類特別有用,它提供壹種簡單的方法來叠代不常用的數據結構(如二進制樹)。

  • 上一篇:人工智能需要學什麽?
  • 下一篇:大理兩日遊最佳路線推薦
  • copyright 2024編程學習大全網