Boolan C++標(biāo)準(zhǔn)庫 第一周

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

?

6.使用容器map

7.使用容器hash_set/hash_map/hash_multiset/hash_multimap

七、分配器之測試

allocator

?

?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容