定義:
方便函數對於不同類型的輸入複用
與普通函數區別
- 普通函數 自動進行類型轉換、
- 函數模板 嚴格準守類型匹配
- 當普通函數和函數模板參數同時滿足被調用,優先考慮普通函數
- 必須調用模板函數是 函數名<>()調用
函數模板實現原理
從函數模板 編譯器根據調用函數,分別以函數模板 實現 對應的調用的模板函數
插入排序案例
#include <iostream>
#include <stdlib.h>
using namespace std;
template<class T>//template<typename T>
void sortAsc(T *arr,int len){
int i=1,j=0,temp=0;
if(len <=1){
return;
}
for(;i<len;i++){
for(;j<len-i;j++){
if(arr[j]>arr[j+1]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
template<class T>
void printArr(T *arr,int len){
int i =0;
for(;i<len;i++){
cout <<arr[i] << endl;
}
cout <<"----" << endl;
}
int main(){
int arr[]={4,1,2,3};
int len = sizeof(arr)/sizeof(arr[0]);
printArr(arr,len);
sortAsc(arr,len);
printArr(arr,len);
system("pause");
}