C 函式模板

2021-09-02 01:41:47 字數 1435 閱讀 5158

舉例:實現compare函式的函式模板、函式模板的特例化、非模板函式、 函式模板的過載。

template//函式模板

bool compare(const t a, const t b)

typedef char* charptr;

template<>//模板的特例化

bool compare(const charptr a, const charptr b)

bool compare(const double a,const double b)//非模板函式

template//函式模板的過載

bool compare(const t arr1, int len1, const t arr2, int len2)

if (i == len1)

}return true;

}int main()

執行結果:

舉例:型別作為模板型別引數。

實現選擇排序的函式模板,排序又分為由大到小和由小到大,可實現其對應的函式模板和模板的特例化,將以上函式模板和模板的特例化,定義為一種型別,作為選擇排序函式模板的型別引數。

templatebool mymore(const t a,const t b)

typedef char* charptr;

template<>

bool mymore(const charptr a, const charptr b)

templatebool myless(const t a, const t b)

template<>

bool myless(const charptr a, const charptr b)

//型別作為模板型別引數

template//pre自動推演出模板型別引數

void sort(t arr, int len,pre pre)

} }}int main()

; sort(arr, 3,mymore);//注意傳參方式!!!

for (int i = 0; i < 3; i++)

cout << endl;

char *arr2 = ;

sort(arr2, 3,myless);

for (int i = 0; i < 3; i++)

cout << endl;

}

執行結果:

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後加乙個識別符號構成。在...

C 函式模板

c 提供了函式模板 function template 所謂函式模板,實際上是建立乙個通用函式,其函式型別和形參型別不具體指定,用乙個虛擬的型別來代表。這個通用函式就稱為函式模板。凡是函式體相同的函式都可以用這個模板來代替,不必定義多個函式,只需在模板中定義一次即可。在呼叫函式時系統會根據實參的型別...