01 C 函式模板

2021-10-06 21:16:50 字數 2426 閱讀 7892

本階段主要針對泛型程式設計和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後加乙個識別符號構成。在...