C++模板知识
C++函数模板
在博客园一个月咯,好像已经断更了好多天了,可能是有点懒惰了,要继续努力了
今天给大家带来的是C++函数模板的一个案例
首先要先简单讲解一下模板语法
template<typename T> 函数声明或定义template --- 声明创建模板
typename --- 表面其后面的符号是一种数据类型,可以用class代替
T --- 通用的数据类型,名称可以替换,通常为大写字母
1.要求
- 利用函数模板封装一个排序的函数,可以对不同数据类型数组进行排序
- 排序规则从大到小,排序算法为选择排序
- 分别利用char数组和int数组进行测试
2.实现
(1)寻找共同点,实现这个共同点的模板
两者选择排序的算法,还有输出函数的算法是除了定义变量类型不同,其他逻辑地方都相同
①实现选择排序的模板
template<class T>
void SelectSort(T a[],int lenth)
{
for (int i = 0; i < lenth; i++) //有lenth次的位置需要排
{
int max = i;
for (int j = i + 1; j < lenth; j++) //两两进行比较
{
if (a[j] > a[max]) //要求是从大到小,所以是如果发现比max下标的值还大的就进行下标标记
{
max = j;
}
}
if (i != max) //如果需要换位置则进行
{
T t = a[i];
a[i] = a[max];
a[max] = t;
}
}
}
这里进行下选择排序法的简单讲解 (字丑别介意)
②实现输出函数的模板
template<class T>
void PrintfArry(T a[],int lenth)
{
for (int i = 0; i < lenth; i++)
{
cout << a[i] << " ";
}
cout << endl;
}
(2)定义并赋值char数组和int数组
①char数组
void char01()
{
char a[] = "bdcfeagh";
char lenth = sizeof(a) / sizeof(a[0]);
SelectSort(a, lenth);
PrintfArry(a, lenth);
}
②int数组
void int02()
{
int a[] = { 2,3,5,6,9,8,7,4,1,10 };
int lenth = sizeof(a) / sizeof(a[0]);
SelectSort(a, lenth);
PrintfArry(a, lenth);
}
3.主函数
int main()
{
char01();
int02();
system("pause");
return 0;
}



浙公网安备 33010602011771号