迭代器
维基百科,自由的百科全书
迭代器(iterator)有時又稱游標(cursor)是程式設計的软件设计模式,可在容器物件(container,例如鏈表或陣列)上遍訪的介面,設計人員無需關心容器物件的內容。
各種語言實作迭代器的方式皆不盡同,有些物件導向語言像Java, C#, Python, Delphi都已將迭代器的特性內建語言當中,完美的跟語言整合,我們稱之隱式迭代器(implicit iterator),但像是C++語言本身就沒有迭代器的特色,但STL仍利用模板實作了功能強大的迭代器。
迭代器另一方面還可以整合生成器(generator)。有些語言將二者視為同一介面,有些語言則將之獨立化。
目录 |
範例 [编辑]
C++ [编辑]
template<typename InputIterator>
void printall(InputIterator first, InputIterator last)
{
for(; first != last; ++first)
{
std::cout << *first << std::endl;
}
}
Java [编辑]
Java JDK 1.2 版開始支持迭代器。每一個迭代器提供next()以及hasNext()方法,同時也支持remove()。
Iterator iter = list.iterator(); //Iterator<MyType> iter = list.iterator(); in J2SE 5.0 while (iter.hasNext()) System.out.println(iter.next());
Ruby [编辑]
Ruby程序員可以用yield關鍵字定義迭代器,又將迭代器和生成器分开。
0..42.each do |n| puts n end
...以及...
for n in 0..42 puts n end
外部連結 [编辑]
- Article "Understanding and Using Iterators" by Joshua Gatcomb
- Article "A Technique for Generic Iteration and Its Optimization" (217 KB) by Stephen M. Watt
- Overview of the Standard Template Library
- STL Iterators
- What are iterators? - Reference description
- Java interface
- Template reference
- Boost C++ Iterator Library
- PHP: Object Iteration