STL原始碼剖析學習筆記(一)

2021-08-14 04:06:29 字數 647 閱讀 6096

本系列文章參考《stl原始碼剖析》,以自己的觀點解釋stl,當作自己的學習筆記,如有錯誤請指出,謝謝大家。

本系列文章適用於對stl有了解但是還未參透者,先從使用的角度,逐漸滲透到其原理,流程為先介紹各種元件及其聯絡,然後介紹容器(vector,list...)的使用,並剖析其主要實現原理,然後介紹迭代器,空間配置器(記憶體管理),及其他。

首先介紹stl六大元件

1.容器(containers):如vector,list,set,map,從實現角度來看stl容器是一種類模板(class template)。

2.演算法(algorithms):如sort,search,copy,erase... 從實現的角度來講stl演算法是一種函式模板(function template)

3.迭代器(iterators):演算法與容器之間的膠合劑,可以認為是互相使用的工具,所謂的"泛型指標"。

4.仿函式(functors):行為類似函式,可作為演算法的某種策略,從實現的角度,仿函式是一種過載了operator()的class或class template,一般函式指標可視為狹義的仿函式。

5.配接器()

6.配置器(allocators):負責空間配置與管理,從實現的角度來說,配置器是乙個實現了動態空間配置,空間管理,空間釋放的class template。

《STL原始碼剖析學習筆記》

1 演算法泛化過程 首先是模板 適應不同型別 其次是迭代器 具有原生指標行為的類 最後是仿函式 行為類似函式指標,但更適合泛化 泛化的優點 個人總結 1 簡化程式,提高 的可重用性 2 提高了程式的通用性 3 提高了程式的可讀性 4 提高了安全性 函式指標及仿函式 首先說說函式指標,乙個程式可能需要...

《STL原始碼剖析》學習筆記

第二章 空間配置器 allocator 考慮到小型區塊可能造成的記憶體破碎問題,sgi設計了雙層級配置器。當配置區塊超過128bytes時,便呼叫第一級配置器,即直接使用malloc free sgi的第一級配置器的allocate 和realloc 都是在呼叫malloc 和realloc 不成功...

STL原始碼剖析筆記

在stl中,迭代器使得容器與演算法分離開來,迭代器會定義五種型別。hash table是一種資料結構,和rb tree類似。其中set map multi set multi map都是基於rb tree。在stl中,patial sort 和nth element 不一樣。patial sort是...