一、STL基礎
1、STL是爲了提高代碼的可重複使用而產生,提供了一個標準的模板庫,可供直接調用。
2、爲了建立數據結構和算法的一套標準,而誕生了STL
3、STL從廣義上可以分爲:容器(container)、算法(algorithm)、迭代器(iterator)
4、容器和算法之間通過迭代器進行連接。
5、STL幾乎所有的代碼都採用了模板類或者模板函數。
二、STL六大件
STL大體分爲六大組件,分別是:容器、算法、迭代器、仿函數、適配器(配接器)、空間配置器
1、容器:各種數據結構,如 vector、list、deque、set、map 等,用來存放數據。
2、算法:各種常用的算法,如 sort、find、copy、for_each等。
3、迭代器:扮演容器與算法之間的膠合劑。
4、仿函數:行爲類似函數、可作爲算法的某種策略。
5、適配器:一種用來修飾容器或者仿函數或者迭代器接口的東西
6、空間配置器:負責空間的配置與管理
(1)、容器
(2)、算法
(3)、迭代器
三、STL組成
1、順序容器
vector
:可變數組deque
:雙端隊列list
:雙向鏈表forward_list
:單向鏈表array
:固定數組大小(C++11)sring
:字符串
2、適配器
queue
:單向隊列stack
:棧priority_queue
:擁有優先級的隊列
3、泛型算法
標準庫並未給每個容器添加了大量的功能,而是提供了一組算法,這些算法中的大多數都是獨立於特定容器的,它們可以用於不同類型的容器和不同類型的元素。
大多數容器都是定義在<algorithm>
頭文件中的,通過迭代器來與容器之間建立聯繫。對容器中的元素進行操作。常用的泛型算法總結歸納
4、關聯容器
關聯容器都支持高效的關鍵字查找和訪問。主要的關聯容器是:map
和set
,並由此一共衍生了8個關聯容器。
map
:關聯數組,保存鍵值對 key-valueset
:關鍵字值multimap
:可重複出現multiset
:可重複出現unordered_map
:哈希函數組織的無序mapunordered_set
:哈希函數組織的無需setunordered_multimap
:無序可重複mapunordered_multiset
:無序可重複set