STL源碼剖析學(xué)習記錄(二)
第五章 關(guān)聯(lián)式容器
1、紅黑樹
operation: 左旋,右旋,變色, header實現(xiàn)技巧,平均查找時間復(fù)雜度nlog(n)
set/map/multiset/multimap
采用RB-tree紅黑樹實現(xiàn);
刪除/插入新元素,不會導(dǎo)致迭代器失效;
set/map不允許重復(fù),multiset/multimap允許重復(fù)
3)hash_table
operation: hash function, vector<slist<key>>, vector作為buckets的容器。rehash遵循質(zhì)數(shù)擴容
線性探測(存在primary clustering問題)、二次探測(存在secondary clustering問題)、開鏈法;
維護一個指針數(shù)組,每一個指針代表一個鏈表(具有相同的hash值);
在插入數(shù)據(jù)時,會插入到同一個hash桶中的相同鍵值的數(shù)據(jù)的next 指向
當出現(xiàn)hashtable中元素個數(shù)達到閾值時(SGI是數(shù)組大小小于總元素個數(shù)時擴容),進行擴容(擴容大小為下一個質(zhì)數(shù)),并將原來的數(shù)據(jù)rehash到新的表中(原來同一個桶中的數(shù)據(jù),現(xiàn)在可能會hash到不同桶中,因此需要一個一個hash,這可能會導(dǎo)致同一個桶的數(shù)據(jù)出現(xiàn)翻轉(zhuǎn)現(xiàn)象);
注意針對double, float等未提供的 用戶需要自定義hash function
4)hash_set/hash_map/hash_multiset/hash_multimap
采用hash_table實現(xiàn);
hash_set/hash_map不允許重復(fù),hash_multiset/hash_multimap允許重復(fù);
map/multimap/unordered_map/ unordered_ multimap
第六章 算法
這章主要講了一些stl對容器值的一些操作,比如sum, replace, fill等,主要分為inplace改變?nèi)萜髦岛瞳@取容器值 兩類
記錄下copy()的操作:
利用type traits和模板偏特化實現(xiàn) 對 可以進行memmove的char*, wchar_t*類別進行 最快的操作,對random_access_tag的類別進行對應(yīng)copy_d操作,對其他類別進行對應(yīng)的操作,已達到最優(yōu)效率
記錄下Sort()的操作:
插入排序STL實現(xiàn):
外循環(huán)依次遍歷整個容器,內(nèi)循環(huán)先判斷l(xiāng)ast是否大于頭元素,如果小于頭元素則對整個區(qū)段向右位移,否則挨個查詢插入點
快速排序STL實現(xiàn):
相關(guān)知識
健康寶二維碼,健康寶掃碼記錄怎么查
二維碼溯源
介紹如何在iPhone上保存二維碼歷史記錄!
病歷中的手術(shù)記錄書寫要點與常見錯誤解析
如何查看健康碼驗證記錄
醫(yī)療安全事件分析記錄本.docx
基于Android的運動記錄APP設(shè)計與實現(xiàn)(論文+源碼)
37周|私立醫(yī)院(安琪兒)剖腹生產(chǎn)記錄
二維碼模板列表
河北健康碼怎么查看打卡記錄?
網(wǎng)址: STL源碼剖析學(xué)習記錄(二) http://m.u1s5d6.cn/newsview1597409.html
推薦資訊
- 1發(fā)朋友圈對老公徹底失望的心情 12775
- 2BMI體重指數(shù)計算公式是什么 11235
- 3補腎吃什么 補腎最佳食物推薦 11199
- 4性生活姿勢有哪些 盤點夫妻性 10425
- 5BMI正常值范圍一般是多少? 10137
- 6在線基礎(chǔ)代謝率(BMR)計算 9652
- 7一邊做飯一邊躁狂怎么辦 9138
- 8從出汗看健康 出汗透露你的健 9063
- 9早上怎么喝水最健康? 8613
- 10五大原因危害女性健康 如何保 7826