STL原始碼剖析

2022-07-02 04:15:11 字數 723 閱讀 2169

**

這兩天略讀完了《stl原始碼剖析》,之所以是略讀,就是只看大體,不講具現(這個詞在《深度探析c++物件模型》中比較多)

已經看過好幾本c++的書了,感覺c++本身設計的博大精深,而c++編譯器就更是乙個神奇的東西,換句話說,你永遠不知道c++編譯器揹著你做了哪些出乎你意料的事

不扯遠了

我主要是想看stl容器的具體實現而去看《stl原始碼剖析》的,的確收穫不少,但不止著乙個,總結而言,大概有三點覺得印象很深

記憶體分配:所謂分配有兩級實現,大於128k記憶體由第一級實現(malloc和free);小於128k的由第二級實現,第二級採用記憶體池的思想,內部分配了8的倍數的記憶體,如,8k, 16k,24k,32k,40k,...128k。這個分配方法,一來體現了記憶體池的分配方式,另外讓我想起了linux記憶體的夥伴系統,似乎有異曲同工之妙

traits程式設計方式:首先看設計模式的迭代器模式「提供了訪問類的介面而不暴露類的具體實現」,這就是所謂的特性程式設計,什麼叫做特性程式設計呢,我想我可以這麼理解:一組事物會表現出某種特性,而你掌握了這種特性,你就掌握了跟它交流的方法,就好比語言,一旦你知道了如何講普通話,你就可以和其他人交流而不用具體限定跟哪個人,普通話可以作為中國人的一種特性。

實現方式:映像深刻的就是list是雙向鍊錶實現的,deque用的結構很複雜,用位址map偽裝成兩端可讀寫的容器,大概就是乙個又乙個連續的記憶體塊,通過乙個位址對映將它們都串起來,其它的我都好像已經看過了,已經了解了

先就這麼簡單的總結總結吧

STL原始碼剖析

這兩天略讀完了 stl原始碼剖析 之所以是略讀,就是只看大體,不講具現 這個詞在 深度探析c 物件模型 中比較多 已經看過好幾本c 的書了,感覺c 本身設計的博大精深,而c 編譯器就更是乙個神奇的東西,換句話說,你永遠不知道c 編譯器揹著你做了哪些出乎你意料的事 不扯遠了 我主要是想看stl容器的具...

STL原始碼剖析

花了兩天時間略讀了一下 stl原始碼分析 看了個大體,對於細節並沒有深究。之所以想翻翻這本書,主要是想看看stl中的特性 介面卡的具體實現。看完之後收穫還是蠻大的,模板的各種組合讓我眼前一亮,下面大概總結一些內容。1.記憶體分配 sgi記憶體分配採用兩級實現,對於大記憶體塊的申請 大於128k 由第...

STL 原始碼剖析 functional

其中比較有意思的兩個函式模板,mem fun與mem fun ref,目的是用於將成員函式轉換為可用的函式物件。具體實現如下所示 非stl原始碼 class kvalshow public void show void setval int n bool sort fun const kvalsho...