終于有機會有動力有能力看jjhou的《STL源碼解析》了。采取快速翻閱模式,有望看完整本。 map和set的底層機制都是RB-Tree(紅黑樹),插入和查找都是O(lgN)的復雜度。map、set以前聽說過,但從來不用,因為不了解,不知道背后是什么。通過讀這本書了解到了其
終于有機會有動力有能力看jjhou的《STL源碼解析》了。采取快速翻閱模式,有望看完整本。
map和set的底層機制都是RB-Tree(紅黑樹),插入和查找都是O(lgN)的復雜度。map、set以前聽說過,但從來不用,因為不了解,不知道背后是什么。通過讀這本書了解到了其背后的機制,也許在將來會用一用。
multimap和multiset沒什么,只是對map和set的小修改而已。
除了這些,還有hash_map、hash_set,其底層機制不是RB-Tree,而是hash table。
了解到這些之后,map、set這些,都不神秘,都可控了。
目前還有一點需要再動手捉摸下:內存管理。STL的simple_allocator可定制行到底如何,得看看。
關于stl使用,最好的參考書莫過于cplusplus.com了
再扯一句OceanBase與STL。
OceanBase中幾乎沒有使用任何stl提供的功能,基本是在重復“發明輪子”,不過這種發明某種程度上我覺得看上去是合理的,比如:返回碼、錯誤碼的定制,這一點就具有很大的靈活性;內存使用方面可定制性也大很多;另外,也輕量很多;再另外,STL的接口也用得蠻頭疼,一大段代碼,全圍著接口轉了,也有辦法不圍著,多用用typedef就會看上去好很多。為什么OceanBase不用STL呢?我想,本質原因還是我們有一群很牛逼的工程師,有能力寫出經得起考驗的底層代碼。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com