GeekBand C++ STL與泛型編程 第一周學習筆記

STL概述

C++標準庫包含STL和一些其他內容

STL有六大組件:

容器,分配器,算法,迭代器,適配器,仿函數

復雜度,Complexity,BIG-O

1.常數時間復雜度

2.線性時間復雜度

3.次線性時間復雜度

4.平方時間復雜度

5.立方時間復雜度

6.指數時間復雜度

7.介于線性及二次方成長的中間時間復雜度

容器

順序性容器

array

不能增長 提供size() front() back() data()等操作

可以進行隨機訪問

vector

只可在尾部進行插入操作,插入速度較快

提供front() back() data() capacity()

capacity會成二的倍數增長

可以進行隨機訪問

list

含有兩根指針, 物理地址不一定連續

插入速度很快

無法進行隨機訪問 ,需要遍歷才可得到指定位置

forword-list

只含有一根指針,物理地址不一定連續

提供向前插入

占用空間更小

slist

gnu中的擴展控件

是forward_list的一種早期實現方式

deque

雙向開口的連續空間

每一段成為一個緩沖 buffer

stack

先進后出的一種輔助容器,底層可以由deque實現

queue

先進先出的一種輔助容器,底層可以有deque實現

關聯性容器

(multi)set?(multi)map

multi類型可以一個鍵對應多個值

set的元素只有一個?

map的元素是一個pair 分別為key 和value

底層為RB Tree

unordered容器

unordered_(multi)map?unordered_(multi)set

底層為HashTable

bucket數可以大于后面掛的項數

分配器

GNU C提供的擴展控件

array_allocator

mt_allocator

debug_allocator

pool_allocator

malloc_allocator

new_allocator

在功力并不深厚時 盡量使用std自帶的分配器 不要自己手動使用

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容