STL六大元件

藍旭晨楓發表於2016-04-07

STL六大元件

1、容器(containers)

如vector、list、deque、set、map用來存放資料。從實現的角度看,STL容器是一種類别範本。

2、演算法(algorithms)

如sort、search、copy、erase。從實現角度看,STL演算法是一種函式模板。

3、迭代器(iterators)

扮演容器與演算法之間的膠合劑,就是所謂的“泛型指標”。從實現的角度看,迭代器是一種將operator*、operator->、operator++、operator--等指標相關操作予以過載的類别範本。原生指標(native pointer)也是一種迭代器。

4、仿函式(functors)

行為類似函式,可以作為演算法的某種策略。仿函式是一種過載了operator()的類或類别範本。一般函式指標可視為狹義的仿函式。

5、介面卡(adapters)

一種用來修飾容器、仿函式、迭代器介面的東西。

STL提供的queue和stack,雖然看似容器,其實只能算是一種容器介面卡,因為他們的底層完全是由藉助deque,所有操作都是由底層的deque供應。

6、配置器(allocators)

負責空間配置與管理。從實現的角度看,配置器是一個實現了空間配置、空間管理、空間釋放的類别範本。


STL六大元件互動關係:

Container通過Allocators取得資料儲存空間。

Algorithm通過Iterator存取Container內容。

Functor可以協助Algorithm完成不同的策略變化

Adaptor可以修飾或套接Functor。

相關文章