2、函数模板 2.1 语法模板不可以直接使用, 它是一个框架 模板的通用并不是万能的
template2.3 总结函数的声明与定义 template --声明一个模板 typename --表明后面的符合是一种类型,可以使用class 代替 T -- 通用的数据类型
函数模板利用关键字 template使用函数模板有两种方式:自动类型推导,显示指定类型模板的目的是为了提高复用性, 将类型参数化。
测试代码
using namespace std; #include// 利用函数模板封装一个排序的函数 可以对不同类型数组进行排序。 // 排序规则从大到小, 排序算法为选择排序 // 分别使用 char数组和 int数组做测试; // 交换值 template void mySwap(T& a, T& b) { T temp = a; a = b; b = temp; } // 排序算法 template void mySort(T arr[], int len) { for (int i = 0; i < len; i++) { int max = i; // 认定 最大值下标 for (int j = i + 1; j < len; j++) { // 认定最大值 比遍历的值小 j 对应的值是最大值; if (arr[max] < arr[j]) { max = j; } } if (max != i) { mySwap(arr[max], arr[i]); } } } // 打印结果 template void printArray(T arr[], int len) { for (int i=0; i < len; i++) { cout << arr[i] << " "; } cout << endl; } void test1() { // 测试char数组 char charArr[] = "badcf"; int nNum = sizeof(charArr) / sizeof(char); mySort(charArr, nNum); printArray(charArr, nNum); } void test2() { // 测试int数组 int intArr[] = { 7, 5, 1, 3, 9, 2, 4, 6, 8 }; int nNum = sizeof(intArr) / sizeof(int); mySort(intArr, nNum); printArray(intArr, nNum); } int main() { test1(); test2(); system("pause"); }



