欢迎来到天天like的博客

博主正在学习c++,网页设计,java,不定时记录自己的学习过程,分享自己的学习心得,让我们一起体验编程的快乐吧

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;
}
posted @ 2020-10-13 20:13  天天like  阅读(64)  评论(0)    收藏  举报