複製鏈接
請複製以下鏈接發送給好友

迭代器

鎖定
迭代器(iterator)有時又稱光標(cursor)是程序設計的軟件設計模式,可在容器對象(container,例如鏈表數組)上遍訪的接口,設計人員無需關心容器對象的內存分配的實現細節。
中文名
迭代器
外文名
iterator

目錄

迭代器名詞簡介

各種語言實現迭代器的方式皆不盡同,有些面嚮對象語言像Java,C#,Ruby,Python,Delphi都已將迭代器的特性內置語言當中,完美的跟語言集成,我們稱之隱式迭代器(implicit iterator),但像是C++語言本身就沒有迭代器的特色,但STL仍利用模板實現了功能強大的迭代器。STL容器的數據的內存地址可能會重新分配(reallocate),與容器綁定的迭代器仍然可以定位到重新分配後的正確的內存地址。
迭代器另一方面還可以集成生成器(generator)。有些語言將二者視為同一接口,有些語言如JavaScript則將之獨立化。 [1] 

迭代器示例

C♯
一種新形式的迭代器它提供了函數式編程中的generator,使用yield return [1] 
類似於Python中使用的yield
// Method that takes an iterable input (possibly an array)
// and returns all even numbers.
public static IEnumerable<int> GetEven(IEnumerable<int> numbers)
{
    foreach(int i in numbers)
    {
        if (i % 2 == 0) yield return i;
    }
}

迭代器參見

C♯
參考資料
  • 1.    Freeman, Eric; Freeman, Elisabeth; Kathy, Sierra; Bert, Bates (2004). Hendrickson, Mike; Loukides, Mike, eds. "Head First Design Patterns" (paperback). 1. O'REILLY: 338. ISBN 978-0-596-00712-6. Retrieved 2012-08-09.