●本階段主要針對泛型程式設計和stl技術做詳細講解,**c++更深層的使用
●模板的概念
模板就是建立通用的模具,大大提高復用性
●模板的特點
模板不可以直接使用,它只是乙個框架
模板的通用並不是萬能的
●函式模板
c++另一種程式設計思想稱為泛型程式設計,主要利用的技術就是模板
c++提供兩種模板機制:函式模板和類模板
作用:建立乙個通用函式,其函式返回值型別和形參型別可以不具體制定,用乙個虛擬的型別來代表
●函式模板語法:
#include
using
namespace std;
//函式模板
//兩個整型交函式
void
swapint
(int
& a,
int& b)
//交換兩個浮點型函式
void
swapdouble
(double
& a,
double
& b)
//函式模板
template
<
typename t>
//宣告乙個模板,告訴編譯器後面**中緊跟著的t不要報錯,t是乙個通用資料型別
void
myswap
(t& a, t& b)
void
test01()
intmain()
總結:
函式模板利用關鍵字template
使用函式模板有兩種方式:自動型別推導,顯示指定型別
模板的目的是為了提高復用性,將型別引數化
●函式模板注意事項
自動型別推導,必須推導出一致的資料型別t,才可以使用
模板必須要確定出t的資料型別,才可以使用
#include
using
namespace std;
//1.函式模板注意事項
template
<
typename t>
//typename可以替換成class
void
myswap
(t& a, t& b)
//1.自動型別推導,必須推導出一致的資料型別t才可以使用
void
test01()
//2.模板必須要確定出t的資料型別,才可以使用
template
<
class
t>
void
func()
void
test02()
intmain()
總結:
使用模板時必須確定出通用資料型別t,並且能夠推導出一致的型別
●函式模板案例
案例描述
利用函式模板封裝乙個排序的函式,可以對不同資料型別陣列進行排序
排序規則從大到小,排序演算法為選擇排序
分別利用char陣列和int陣列進行測試
#include
using
namespace std;
//實現通用 對陣列進行排序的函式
//規則 從大到小
// 演算法 選擇
//測試 char陣列 int陣列
//交換函式模板
template
<
class
t>
void
myswap
(t& a, t& b)
//排序演算法
template
<
class
t>
void
mysort
(t arr,
int len)}if
(max != i)}}
//提供列印陣列模板
template
<
class
t>
void
printarray
(t arr,
int len)
cout << endl;
}void
test01()
void
test02()
;int num =
sizeof
(intarr)
/sizeof
(int);
mysort
(intarr, num)
;printarray
(intarr, num);}
intmain()
函式模板 C 01
在c 中,資料的型別也可以通過引數來傳遞,在函式定義時可以不指明具體的資料型別,當發生函式呼叫時,編譯器可以根據傳入的實參自動推斷資料型別。這就是型別的引數化。函式模板是一種特殊的函式,可以使用不同的型別進行呼叫,對於功能相同的函式,不需要重複編寫 並且函式模板與普通函式看起來很類似,區別就是型別可...
c 函式模板
include using namespace std template t max t a,t b,t c int main int main int i1 185,i2 76,i3 567,i double d1 56.63,d2 90.23,d3 3214.78,d long g1 67854...
c 函式模板
關鍵字template總是放在模板的電腦關於與宣告的最前面,關鍵字後面是用逗號分隔的模板參數列,該列表是模板參數列,不能為空。模板引數可以是乙個模板型別引數,它代表了一種型別 也可以是乙個模板非型別引數,它代表了乙個常量表示式。模板型別引數由關鍵字class或typename後加乙個識別符號構成。在...