迭代器是一種抽象的設(shè)計概念,現(xiàn)實程序語言中并沒有直接對應(yīng)于這個概念的實物。《設(shè)計模式》一書提供有23個設(shè)計模式的完整描述,其中iterator模式定義如下:提供一種方法,使之能夠依序巡訪某個聚合物(容器)所含 的各個元素,而又無需暴露該聚合物的內(nèi)部表述方式。本文詳細講解迭代器。
不論是泛型思維或stl的實際運用,迭代器都扮演著重要的角色。
stl的中心思想在于:將靈氣窗口和算法分開,彼此獨立設(shè)計,最后再以帖膠著劑將它們撮合在一起。窗口和算法的泛型化,從技術(shù)角色來看并不困難,C++的class template和function template 可分別達成目標。
如下例子:
template<class InputIterator,class T>
InputIterator find(InputIterator first,InputIterator last, const T& value) {
while(first != last && *frist != value)
++first;
return first;
}
迭代器是一種smart pointer
迭代器是一種行為類似的對象,而各種行為中最也是最重要的命題內(nèi)容提領(lǐng)和成員訪問,因此,迭代器最重要的編程工作就是對operator*和operator->進行重載工作。
T& operator*() const { *pointer;}
T* operator->() const { opionter;}
關(guān)于這一點,C++標準程序庫有一個auto_prt可供我們參考。這是一個用來包裝原生的對象,聲名狼藉的內(nèi)存漏洞問題可經(jīng)獲得解決 [1]
后續(xù)待寫。
-
auto_ptr 在c11中已經(jīng)廢除了 ?