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。