歷時一月左右,基本看完了c++標準庫的原始碼,忽略了一些用處不那麼大的部分,和一些複雜難以理解的演算法:輸入輸出庫,一些複雜的演算法(stable_sort,stable_partition,inplace_merge,list的排序,紅黑樹的調整等)。
總體而言,收益還是蠻多的,首先了解了stl容器的用法,和內部實現,加深了對模板和型別推斷的了解。學到了一些技巧,比如統計bitset中1個數使用的查表法,deque使用的雙層儲存結構,allocator使用的兩級配置器,vector和string的記憶體增長策略,string的copy-on-write技術,partition使用的演算法,函式物件的配接技術等等。
trait技法
使用模板特化技術,不同的特化版本中將不同型別typedef成相同名字,針對每種型別定義不同的函式模板來處理,我模仿的簡單例子:
#include
using
namespace
std;
struct true_type{};
struct false_type{};
template
struct traits
;template
<>
struct traits
;void process_aux(true_type)
void process_aux(false_type)
template
void process(t m)
int main()
這很大程度上得益於函式模板的型別推斷機制,process(2.3)和process(6)僅引數型別不同,內部就有完全不同的實現。 STL學習總結
stl standard template library,標準模板庫 是惠普實驗室開發的一系列軟體的統稱。stl從廣義上分為 容器 演算法 迭代器,容器和演算法之間通過迭代器進行無縫連線。stl幾乎所有的 都採用了模板類或者模板函式,這相比傳統的由函式和類組成的庫來說提供了更好的 重用機會 stl...
STL學習總結
一.1 什麼是標準模板庫 stl 1 c 標準模板庫與c 標準庫的關係 c 標準模板庫其實屬於c 標準庫的一部分,c 標準模板庫主要是定義了標準模板的定義與宣告,而這些模板主要都是 類模板,我們可以呼叫這些模板來定義乙個具體的類 與之前的自己手動建立乙個函式模版或者是類模板不一樣,我們使用了 stl...
STL學習總結
總結stl中vector,set,multiset,map,multimap,deque,stack,list,queue,priority queue,string的優缺點以及基本的函式用法。stl存在的意義就是把c語言中資料結構的很多很多的 封裝成乙個個函式名,方便呼叫,提高效率。include...