極客班STL與泛型程式設計 第一周學習筆記

2021-07-17 03:48:16 字數 1413 閱讀 7195

續前節template簡單分類

模板是指允許函式或類(物件)通過泛型的形式進行表現或執行。對應不同的型別(types),都可以正常工作,而無需每個型別一套程式。

例項化分為顯式例項化和隱式例項化,顯示例項化是指在**中明確指明使用哪種型別進行例項化,例如前節中complexc1(1.1,2.2);隱式例項化是在首次使用時根據具體情況使用一種合適的型別進行例項化。

① <>內部 typename 與 class 通用,但是此處struct不可以替換class。

template

inline

const t& min(const t&a,const t&b)

{}

等價於

templatet>

inline

const t& min(const t&a,const t&b)

②模板在例項化之前,要檢查模板**本身有沒有語法錯誤;例項化期間,也要檢查對模板**的呼叫是否合理。

比如前節中min模板,本身沒有語法問題後,在例項化時要考慮呼叫是否能夠完成,模板中利用了operator

③不允許自動型別轉換,模板引數必須是嚴格匹配的。

對於min(1,2.0);,錯在於我們設定的min模板兩個引數是一樣的,對於不同引數,由於不能進行自動型別轉化而無法執行。

可改為顯式指定t型別min(1,2.0);

或強制轉換引數型別min(static_cast(1),2.0);

④當非模板函式與模板函式並存,且都滿足函式需求時,呼叫非模板函式,而不是從模板函式生成例項。

⑤類模板的成員函式的宣告(複製建構函式除外)與定義,如果當中要用到本類模板型別,則要寫全名。

例如

⑥特例化後的具體實現可以與主模板不同,例如

⑦類模板可進行偏特化和設定預設引數型別

類此於普通的函式構造,類模板也可以進行預設引數型別設定;而進行偏特化即部分引數特化而部分引數使用泛型。

STL與泛型程式設計 第一周筆記 Geekband

簡單模板 template typename t t function t a,t b 類模板 template struct object 函式模板 template class t inline t function t a,t b 不可以使用不同型別的引數來呼叫函式模板 可以使用class代替...

極客演算法第一周

1.兩數之和 方法一 暴力法 兩層迴圈 時間複雜度 o n 2 空間複雜度o 1 方法二 兩遍雜湊表 第一遍構造雜湊表,第二遍找答案 時間複雜度 o n 空間複雜度o n 方法三 一遍雜湊表 最優解 時間複雜度 o n 空間複雜度o n 11.盛最多水的容器 方法一 暴力法 兩層迴圈 時間複雜度 o...

Boolan STL與泛型程式設計 第一周筆記

泛型程式設計 一 我們的目標 level 0 使用c 標準庫 level1 認識c 標準庫 胸中自由丘壑 level2 良好使用c 標準庫 level3 擴充c 標準庫 c standard library vs.standard template library stl 前者包含後者 c 標準庫的...