一. 舉例說明
我們知道,在 STL 裡提供 Iterator 來遍歷 Vector 或者 List 數據結構。
Iterator 模式也正是用來解決對一個聚合對象的遍歷問題,將對聚合的遍歷封裝到一個類中進行,這樣就避免暴露這個聚合對象的內部表示的可能。
例如在 STL 裡有如相下結構:
二. 迭代器模式
定義:提供一種方法順序訪問一個聚合對象中各個元素,而又不暴露該對象的內部表示。
比較經典的例子是 STL 裡的 for_each 操作:
[cpp] // function called for each element
void print (int elem)
{
cout << elem << ' ';
}
int main()
{
vector<int> coll;
INSERT_ELEMENTS(coll,1,9);
// for_each 對每個 elem 將調用 print(elem)
for_each (coll.begin(), coll.end(), // range
print); // operation
cout << endl;
}
作者 lwbeyond