VS2017学习C++基础十四(模板函数)

// chapter10a03函数模板.cpp : 
//所谓函数模板(Function Template),实际上就是建立一个通用函数
//1.函数定义时不指定具体的数据类型(使用虚拟类型代替)
//2.函数被调用时编译器根据实参反推数据类型-类型的参数化

/*
*模板头与函数声明/定义永远是不可的分割的整体
*template <typename 类型参数1 ,typename 类型参数2,……>
*返回值类型 函数名(形参列表)
*{
       在函数体中可以使用类型参数
*}
*
*/
#include 
#include 
using namespace std;

//书写函数模板
template<typename T> void sort(T tArray[], int len);
template<typename T> void show(T tArray[], int len);

int main()
{
     
	int iNums[] = {
      5, 15, 24, 10, 6 };
	int len = sizeof(iNums) / sizeof(iNums[0]);
	float fNums[] = {
      5.5, 15.2, 24.0, 10.6, 6 };
	double dNums[] = {
      5.0, 15.4, 24.2, 10.1 ,6 };
	string sNums[] = {
     "关羽","张飞","赵云","马超","黄忠"};
	cout << "排序前:";
	show(iNums, sizeof(iNums) / sizeof(iNums[0]));
	cout << endl;
	sort(iNums, sizeof(iNums) / sizeof(iNums[0]));
	cout << "排序后:";
	show(iNums, sizeof(iNums) / sizeof(iNums[0]));
	cout << endl;	
	cout << "排序前:";
	show(fNums, sizeof(fNums) / sizeof(fNums[0]));
	cout << endl;
	sort(fNums, sizeof(fNums) / sizeof(fNums[0]));
	cout << "排序后:";
	show(fNums, sizeof(fNums) / sizeof(fNums[0]));
	cout << endl;
	//显示
	show(sNums, 5);
}


template<typename T> 
void sort(T tArray[], int len)
{
     
	T temp;
	for (int i = 0; i < len - i; i++)
	{
     
		for (int j = 0; j < len - i - 1; j++)
		{
     
			if (tArray[j] > tArray[j + 1])
			{
     
				temp = tArray[j];
				tArray[j] = tArray[j + 1];
				tArray[j + 1] = temp;
			}
		}
	}
}
template<typename T>
void show(T tArray[], int len)
{
     
	for (int i = 0; i < len; i++)
	{
     
		cout << tArray[i] << '\t';
	}
}
排序前:5       15      24      10      6
排序后:5       6       10      15      24
排序前:5.5     15.2    24      10.6    6
排序后:5.5     6       10.6    15.2    24
关羽    张飞    赵云    马超    黄忠

你可能感兴趣的:(VS2017-C++,c++,VS2017)