為什麼使用模板

2021-09-08 13:19:01 字數 1785 閱讀 2750

c++模板程式設計是泛型程式設計的實現方式,因為c++中的型別都是強型別。所以導致每個變數都有一種相應的型別。這樣就會出現乙個弊端,就是相同乙個演算法針對不同型別的引數,就要實現多個版本號,這樣豈不是非常麻煩。

那麼,c++中是否會有一種辦法來幫助我們實現演算法通用呢?答案是有的,這就是模板程式設計,模板程式設計的目的就是實現**的高度復用。降低不必要的反覆勞動,從而實現泛型程式設計的目標。

以下。我們通過詳細的樣例來幫助大家體會模板的優點。這樣才會加深大家的印象。

例1 實現乙個函式。找出整形陣列中的最大值,並返回。

//求出整數陣列中的最大值

//引數:

//pinput:陣列

//nsize:陣列大小

//nmax:返回陣列中的最大值,是乙個輸出引數

//返回值:假設函式執行成功返回1,否則返回0。

#include#includeint max_int(int * pinput, int nlen, int & nmax)

nmax = pinput[0];

int i = 0;

for(i = 1; i < nlen; i++)

}return 1;

}int main()

; int nmax = 0;

if(max_int(array, 5,nmax) == 0)

printf("最大值:%d\n", nmax);

return 0;

}

例1中的函式功能是查詢整個整型陣列中的最大值。執行效果例如以下:

可是。假設我們想要查詢到乙個浮點型陣列的最大值。該怎樣寫呢?

例2 實現乙個函式,找出浮點型陣列中的最大值,並返回。

//求出浮點陣列中的最大值

//引數:

//pinput:陣列

//nsize:陣列大小

//fmax:返回陣列中的最大值,是乙個輸出引數

//返回值:假設函式執行成功返回1,否則返回0;

#include#includeint max_float(float * pinput, int nlen, float & fmax)

fmax = pinput[0];

int i = 0;

for (i = 1; i < nlen; i++)

max = pinput[0];

int i = 0;

for (i = 1; i < nlen; i++)

}return 1;

}int main()

; double farray[5] = ;

char carray[5] = ;

int nmax = 0;

double lfmax = 0.0;

char cmax = 0;

if (max_array(narray, 5, nmax) == 0)

else

if (max_array(farray, 5, lfmax) == 0)

else

if(max_array(carray, 5, cmax) == 0)

else

return 0;

}

例3中定義了乙個函式模板,然後分別被3個陣列:整型陣列,浮點陣列,字元陣列分別呼叫,執行效果例如以下:

今天。我們主要是通過幾個小樣例,幫助大家體會模板的優點。

模板的主要目標就是實現邏輯**和資料型別相分離。從而實現**的高度復用。

為什麼要叫模板語法?

模板 小明今天生病了,想向老師請一天假,老師欣然同意了。但老師需要小明交一張請假條,但小明不會寫。為什麼不會呢?因為請假條是有固定格式的,需要 標準 於是小明問老師 老師,你有請假條的模板嗎?讓我看看。老師拿了一張小紅寫的請假條給小明看,對小明說 按照這個模板寫。所以,現在想要創造乙個物體,但建立此...

為什麼使用 DOCTYPE html

a doctype is a mostly useless,but required,header.html5 spec 現在的各種web開發工具都足夠強大,支援插入模板 因此你並不需要把這又長又臭的doctype乙個個字母的敲出來。doctype最大的作用是讓瀏覽器用來選擇渲染模式,或者說是用來觸...

為什麼使用指標

在實際程式設計中,既然使用變數就可以訪問資料,為什麼還用指標呢?使用指標來操縱自動變數的唯一原因是,為了說明指標的工作原理。指標真正的用途是被用於完成下列3種任務 管理自由儲存區中的資料 訪問類的成員資料和函式 按引用傳遞引數 在 函式的 工作原理 中,提到了5個記憶體區域 全域性命名空間 自由儲存...