spark —機器學習
阿新 • • 發佈:2022-04-08
1 模板
1.1 模板的概念
模板就是建立通用的模具,大大提高複用性
模板的特點:
- 模板不可以直接使用,它只是一個框架
- 模板的通用並不是萬能的
1.2 函式模板
-
C++另一種程式設計思想稱為 ==泛型程式設計== ,主要利用的技術就是模板
-
C++提供兩種模板機制:函式模板和類模板
1.2.1 函式模板語法
函式模板作用:
建立一個通用函式,其函式返回值型別和形參型別可以不具體制定,用一個虛擬的型別來代表。
語法:
template<typename T>
函式宣告或定義
解釋:
template --- 宣告建立模板
typename --- 表面其後面的符號是一種資料型別,可以用class代替
T --- 通用的資料型別,名稱可以替換,通常為大寫字母
示例:
//交換整型函式 void swapInt(int& a, int& b) { int temp = a; a = b; b = temp; } //交換浮點型函式 void swapDouble(double& a, double& b) { double temp = a; a = b; b = temp; } //利用模板提供通用的交換函式,告訴編譯器緊跟著的程式碼中的T不要報錯 template<typename T> void mySwap(T& a, T& b) { T temp= a; a = b; b = temp; } void test01() { int a = 10; int b = 20; //swapInt(a, b); //利用模板實現交換 //1、自動型別推導 mySwap(a, b); //2、顯示指定型別 mySwap<int>(a, b); cout << "a = " << a << endl; cout << "b = " << b << endl; } int main() { test01(); system("pause"); return 0; }
總結:
- 函式模板利用關鍵字 template
- 使用函式模板有兩種方式:自動型別推導、顯示指定型別
- 模板的目的是為了提高複用性,將型別引數化
1.2.2 函式模板注意事項
注意事項:
-
自動型別推導,必須推匯出一致的資料型別T,才可以使用
-
模板必須要確定出T的資料型別,才可以使用
//利用模板提供通用的交換函式 template<class T> void mySwap(T& a, T& b) { T temp = a; a = b; b = temp; } // 1、自動型別推導,必須推匯出一致的資料型別T,才可以使用 void test01() { int a = 10; int b = 20; char c = 'c'; mySwap(a, b); // 正確,可以推匯出一致的T //mySwap(a, c); // 錯誤,推導不出一致的T型別 } // 2、模板必須要確定出T的資料型別,才可以使用 template<class T> //func函式緊跟著模板,所以它是一個模板函式 void func() { cout << "func 呼叫" << endl; } void test02() { //func(); //錯誤,模板不能獨立使用,必須確定出T的型別, func<int>(); //利用顯示指定型別的方式,給T一個型別,才可以使用該模板,模板函式func又沒有用T的地方,所以可以這樣呼叫 } int main() { test01(); test02(); system("pause"); return 0; }
總結:
- 使用模板時必須確定出通用資料型別T,並且能夠推匯出一致的型別