1. 程式人生 > >STL標準模板庫簡介

STL標準模板庫簡介

STL簡介

STL(Standard Template Library),標準模板庫。
它是為了建立資料結構和演算法的一套標準,並且降低其間的耦合關係而產生,它給我們帶來了一套極具實用價值的零部件,以及一個整合的組織。(文章之後會介紹它的六大元件)
它所實現的,是依據泛型思維架設起來的一個概念結構,以抽象概念為主題形成了嚴謹的介面標準,使得其元件都有最大的獨立性。
STL的版本很多,常見的有HP STL、PJ STL、 SGI STL等。

STL的六大元件

STL提供了六大元件,他們之間可以組合套用。
它們之間的關係為:容器通過配置器獲取資料存數空間,演算法通過迭代器存取容器的內容,仿函式可以協助演算法完成不同的策略變化,配接器可以修飾或套接仿函式。

配置器(allocators)

負責空間配置和管理,配接器是一個實現了動態空間配置、空間管理、空間釋放的class template

容器(containers)

各種資料結構,如vector,list, deque,set,map,它們用於存放資料。

迭代器(iterators)

看到迭代器這個名字,我很迷惑,不知道這個高階的名字到底是個什麼東東。其實迭代器就像是膠水,講資料結構(容器)和演算法粘合在一起,它有5種類型,剛剛接觸到它的時候有人讓我把它理解成指標,其實後來瞭解到原生指標也是迭代器的一種。迭代器就是所謂的“泛型指標”,我們可以通過之後的原始碼閱讀來深層次瞭解它。

演算法(algorithms)

各種常用的演算法,如sort,search,erase等。

仿函式(functors)

顧名思義,仿函式就是行為類似於函式(但是實則不是),它可作為演算法的某種策略,一般的函式值真可以視為狹義的仿函式。

配接器(adapters)

一種用來修飾容器、仿函式、或迭代器的東西。例如,STL提供的queue,雖然看似容器,但只能算是一種容器配接器,因為它的內部完全藉助於deque,所有操作都由deque供應。