hash表為底層的容器及hash表
智慧型指標
stl六大元件
容器:資料結構,用來存放資料
演算法:常用演算法
迭代器:容器和演算法之間的膠合劑,「范型指標」
仿函式:一種過載了operator()的類,使得這個類的使用看上去像乙個函式
配置器:為容器分配並管理記憶體
介面卡:修改其他元件介面
底層為陣列,支援隨機訪問,節點大小是動態的,支援下標訪問。隨機訪問效率很高(o(1)),插入效率不高。
擴容原理:以原大小的兩倍配置乙份新空間,將原空間資料拷貝過來,會導致迭代器失效
常用函式
size():當前vector元素個數
capacity():vector已分配空間容量
reserve():預分配空間,分配空間小於現有空間,不改變空間容量
resize():改變size大小,不改變容量大小
#include
#include
#include
#include
using namespace std;
void
push
(vector<
int>
&vec,
int i)
intmain()
cout<<
"vec中元素現為"
int>
::iterator iter=vec.
begin()
;while
(iter!=vec.
end())
cout
resize(2
);cout<<
"在vec.resize(2)後"
"vec.size()="
<<
" vec.capacity()="
"vec中元素變為"
begin()
;while
(iter!=vec.
end())
cout
reserve(3
);cout<<
"在vec.reserve(3)後"
"vec.size()="
<<
" vec.capacity()="
reserve(5
);cout<<
"在vec.reserve(5)後"
"vec.size()="
<<
" vec.capacity()="
}
結果為:
vector未放入元素時
vec.size()=0 vec.capacity()=0
vector放入1個元素時
vec.size()=1 vec.capacity()=1
vector放入2個元素時
vec.size()=2 vec.capacity()=2
vector放入3個元素時
vec.size()=3 vec.capacity()=4
vec中元素現為
1 2 3
在vec.resize(2)後
vec.size()=2 vec.capacity()=4
vec中元素變為
1 2在vec.reserve(3)後
vec.size()=2 vec.capacity()=4
在vec.reserve(5)後
vec.size()=2 vec.capacity()=5
底層為雙向鍊錶,記憶體空間不連續,只能通過指標訪問資料,插入刪除高效,隨機訪問非常沒有效率。適用於物件需要大量刪除插入操作的環境。
list的iterator不支援+,+=,《操作
list.sort():合併前兩個元素,合併後兩個元素,兩個子串行合併,序列大小變化順序為2->4->8->16…完成排序(o(log(n)))
雙向佇列,乙個**控制器+多個緩衝區,支援首尾快速增刪,支援隨機訪問。
底層為deque/list,封閉頭部,不使用vector作為底層的原因是vector擴容耗時。
queue:底層為deque/list,封閉頭部,不使用vector作為底層的原因是vector擴容耗時。
priority_queue:優先佇列,以vector為底層,以heap為處理規則管理底層實現。
有序元素可重複
set是
否multiset是是
map是
否multimap是是
插入刪除,查詢時間複雜度為o(log(n))
作為關聯容器,set不同於map的地方在於,set的key就是value。
紅黑樹的特點:根節點是黑色,葉節點是黑色的null節點,任意節點到其葉節點經過的黑色節點數量是相同的。
去除掉黑色null節點,紅黑樹是一層黑一層紅。
紅黑樹是近平衡的二叉搜尋樹,和平衡二叉搜尋樹相比,紅黑樹的平衡沒有那麼平衡,插入後可以保證調整三次之間可以使樹達到平衡條件。
有序元素可重複
hash_set否否
hash_multiset否是
hash_map否否
hash_multimap否是
查詢時間複雜度o(1)
封裝普通指標使其表現的像普通指標一樣。超過類的作用域,將會自己呼叫析構函式,自動釋放資源
auto_ptr:不可以用於容器,不建議使用,不支援複製和賦值,如果進行了賦值和複製操作,並不報錯
unique_ptr:不支援複製和賦值,直接賦值會報錯,同一時刻物件僅能擁有乙個unique_ptr指向自身
shared_ptr:解決指標間物件共享所有權的問題,auto_ptr是獨享,允許多個指標指向同乙個物件。基於引用計數,不要乙個原始指標初始化多個shared_ptr,避免迴圈使用避免記憶體洩露。
物件初始化時應用數為1,指向物件成為另乙個物件副本,引用數加一,析構減一。
weak_ptr:不控制物件生命週期的智慧型指標,只提供了管理物件的訪問手段,用於協助shared_ptr的工作,用於觀測資源的使用情況。use_count()可以一觀察資源的應用數。
面試複習鏈結整理
1.densenet詳解 2.機器學習與深度學習常見面試題 3.機器學習與深度學習核心知識點總結 4.深度卷積神經網路演化歷史及結構改進網路 5.怎樣成為一名優秀的演算法工程師 6.知識庫 技術文章 7.理解概率密度函式 9.eco efficient video understanding 10....
作業系統(面試複習整理)
程序和執行緒 併發和並行 2 cpu排程 記憶體分配 3 磁碟排程 pcb程序狀態 程序編號 程式計數器 即將執行的下個指令位址 暫存器記憶體界限 開啟檔案列表 cpu排程資訊 fork 建立子程序 exec 代替父程序 wait 父程序等待子程序消亡 子程序繼承父程序 1 使用者號 uids 和使...
資料整理,SQL Server ,面試前複習筆記
t sql 要掌握的知識點分類 sql 是一門 ansi 的標準計算機語言,用來訪問和運算元據庫系統。sql 語句用於取回和更新資料庫中的資料。sql 可與資料庫程式協同工作,比如 ms access db2 informix ms sql server oracle sybase 以及其他資料庫系...