C++標(biāo)準(zhǔn)庫
第一講
一、認(rèn)識headers、版本
1.C++標(biāo)準(zhǔn)庫 vs STL
??? C++標(biāo)準(zhǔn)庫大于STL(標(biāo)準(zhǔn)模板庫)
標(biāo)準(zhǔn)庫以header files形式呈現(xiàn)
網(wǎng)站
cplusplus.com
cppreference.com
gcc.gnu.org
二、STL體系結(jié)構(gòu)基礎(chǔ)介紹
1.STL六大部件
容器(containers)
分配器(allocators)
算法(algorithms)
迭代器(iterators)
適配器(adapters)
仿函數(shù)(functors)
?
分配器處理內(nèi)存分配。分配器可以不寫,會有默認(rèn)的分配器。
iterator 泛化的指針
?
C++11
range-based for
auto keyword
?
三、容器之分類與各種測試(一)
1.容器-結(jié)構(gòu)與分類
(1)Sequence Containers
Array(C++11)
Vector
Deque
List 雙向鏈表
Forward-List(C++11)
(2)Associative Containers
Set/Multiset 紅黑樹(高度平衡二分樹)每個節(jié)點(diǎn)key和value是同一個
Map/Multimap 紅黑樹 map每個節(jié)點(diǎn)有key和value
Multi可以重復(fù)
(3)Unordered Containers(C++11)
Unordered Set/Multiset
Unordered Map/Multimap
HashTable Separate Chaining
2.使用容器array
??? 不能擴(kuò)充。
四、容器之分類與各種測試(二)
1.使用容器vector
find 0秒?
vector擴(kuò)展方式:兩倍擴(kuò)展
?
五、容器之分類與各種測試(三)
1.使用容器list
list:雙向鏈表
vector是一塊連續(xù)的空間,每次擴(kuò)展時需要重新申請兩倍的空間
2.使用容器list
list:雙向鏈表
list自己也有sort,要比全局的sort快
3.使用容器forward list
forward list:單向鏈表
4.使用容器deque
deque:雙向進(jìn)出
分段連續(xù),每一段(buffer)是連續(xù)的。每次擴(kuò)容一個buffer。
deque沒有sort,需要用全局sort
5.使用容器stack
stack:先進(jìn)后出
沒有iterator
6.使用容器queue
queue:先進(jìn)先出
六、容器之分類與各種測試(四)
1.使用容器multiset
multiset:可以重復(fù)
insert
自己find比全局find快
2.使用容器multimap
pair
3.使用容器unordered_multiset
使用hashtable實(shí)現(xiàn)
籃子(bucket_count())比元素多,有的籃子沒有元素
4.使用容器unordered_multimap
?
5.使用容器set
?
7.使用容器hash_set/hash_map/hash_multiset/hash_multimap
七、分配器之測試
allocator
?
?