模板 函式模板 類模板

2021-10-25 08:04:05 字數 2303 閱讀 6100

模板主要是針對資料型別,不同的資料型別卻具有相同的操作形式,比如說,同樣是做入棧,intdouble由於資料型別不一樣,需要做兩個棧才能滿足需求,誠然可以使用函式過載,但是終歸棧的操作是一樣的,只是資料型別不一樣。所以在此基礎上,假設,我們首先將所有的資料型別視為乙個大類,將它引數化,等到要用的時候再去呼叫具體的型別,那麼可以大大減少**量,也使**更清晰。

模板——也就是由上面的問題所引出來的解決機制。將相類似的問題抽象出共同的結構,不同的地方用引數來表達。

模板的具體表達為:templatetemplatet代表資料型別。

函式模板

函式模板——>函式模板例項
過載函式可以抽象成乙個模板,形同的操作保留,不同的操作(一般是資料型別)做成引數。

函式模板來定義排序或者輸出。

template

<

class

elementtype

>

void sortarray (elementtype b,

int len)

elementtype temp = b[i]

; b[i]

= b[min]

; b[min]

= temp;

}template

<

class

elementtype

>

void displayarray (elementtype b,

int len)

以上是將資料型別引數化為template,例項化後可以具體實現具體資料型別的陣列的排序和輸出。

1.1 函式模板例項化

# define size 8

intmain()

;double af[size]=;

dispalyarray

(ai, size)

;sortarray

(ai, size)

;dispalyarray

(ai, size)

;dispalyarray

(af, size)

;sortarray

(af, size)

;dispalyarray

(af, size)

;return0;

}

具體實行是,mian函式執行到dispalyarray(ai, size);,將ai替換為template 的所有 elementtype型別。如果需要修改排序演算法,只需要修改模板裡的就可以了。

類模板

類模板——>類模板例項——>物件
#define default_elem_num 8

template

<

class

elementtype

>

class

stack

;int pop (elementtype &num)

;int push (elementtype num)

;private

: elementtype *data;

int memnum;

int size;};

template

<

class

elementtype

>

stack

::stack

(int s)

template

<

class

elementtype

>

int stack

::pop

(elementtype &num)

template

<

class

elementtype

>

int stack

::push

(elementtype mem)

2.1 類模板例項化和物件例項化

int

main()

while

(doublestack.

pop(f)

) cout << f <<'';

return

0;}

模板函式,模板類

使用模板函式 include stdafx.h include iostream include string using namespace std template template t add const t t1,const t t2 int tmain int argc,tchar arg...

函式模板,類模板

來自 函式模板 template t getmax t a,t b 呼叫 int i 5,j 6,k long l 10,m 5,n k getmax i,j n getmax l,m 也可以雙型別 template t getmin t a,u b return a呼叫 int i,j long ...

類模板,模板類和函式模板,模板函式

單整數類 雙整數類 所以c艹跟其他強型別語言為我們提供了乙個所謂模版功能 變數型別 整數 類模板的重點是模板。表示的是乙個模板,專門用於產生類的模子。例子 1 template 2 class vector 3 使用這個vector模板就可以產生很多的class 類 vector vector ve...