1、模板的特点
模板不可以直接使用, 它是一个框架 模板的通用并不是万能的
2、函数模板
2.1 语法
template<typename T>
函数的声明与定义
template --声明一个模板
typename --表明后面的符合是一种类型,可以使用class 代替
T -- 通用的数据类型
2.3 总结
- 函数模板利用关键字 template
- 使用函数模板有两种方式:自动类型推导,显示指定类型
- 模板的目的是为了提高复用性, 将类型参数化。
测试代码
using namespace std;
#include <iostream>
// 利用函数模板封装一个排序的函数 可以对不同类型数组进行排序。
// 排序规则从大到小, 排序算法为选择排序
// 分别使用 char数组和 int数组做测试;
// 交换值
template <class T>
void mySwap(T& a, T& b)
{
T temp = a;
a = b;
b = temp;
}
// 排序算法
template <class T>
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<class T>
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");
}