函数重载与函数模板

5 篇文章 0 订阅

函数重载:
函数名相同,参数列表(特征标)不同

#include <iostream>

using namespace std;

void sort(int[], int len);//排序
void sort(float[], int len);
void sort(double[], int len);
void show(int[], int len);//输出
void show(float[], int len);
void show(double[], int len);

void sort(int nums[], int len)
{
	int temp;
	for(int i = 0; i < len - 1; i++)
	{
		for(int j = 0; j < len - i - 1;j++)
		{
			if(nums[j] > nums[j+1])
			{
				temp = nums[j];
				nums[j] = nums[j+1];
				nums[j+1] = temp;
			}
		}
	}
}

void sort(float nums[], int len)
{
	float temp;
	for(int i = 0; i < len - 1; i++)
	{
		for(int j = 0; j < len - i - 1;j++)
		{
			if(nums[j] > nums[j+1])
			{
				temp = nums[j];
				nums[j] = nums[j+1];
				nums[j+1] = temp;
			}
		}
	}
}

void sort(double nums[], int len)
{
	double temp;
	for(int i = 0; i < len - 1; i++)
	{
		for(int j = 0; j < len - i - 1;j++)
		{
			if(nums[j] > nums[j+1])
			{
				temp = nums[j];
				nums[j] = nums[j+1];
				nums[j+1] = temp;
			}
		}
	}
}

void show(int nums[], int len)
{
	for(int i = 0; i < len; i++)
	{
		cout << nums[i] <<" ";
	}
	cout << endl;
}

void show(float nums[], int len)
{
	for(int i = 0; i < len; i++)
	{
		cout << nums[i] <<" ";
	}
	cout << endl;
}

void show(double nums[], int len)
{
	for(int i = 0; i < len; i++)
	{
		cout << nums[i] <<" ";
	}
	cout << endl;
}

int main()
{
	int iNums[] = {56, 54, 12, 89, 43};
	float fNums[] = {78.0f, 5.7f, 42.8f, 99.1f};
	double dNums[] = {78.9, 23.6, 77.8, 98.5, 33.3};
	
	cout << "排序前:";
	show(iNums, sizeof(iNums) / sizeof(iNums[0]));
	cout << "排序后:";
	sort(iNums, sizeof(iNums) / sizeof(iNums[0]));
	show(iNums, sizeof(iNums) / sizeof(iNums[0]));
	
	cout << "排序前:";
	show(fNums, sizeof(fNums) / sizeof(fNums[0]));
	cout << "排序后:";
	sort(fNums, sizeof(fNums) / sizeof(fNums[0]));
	show(fNums, sizeof(fNums) / sizeof(fNums[0]));
	
	cout << "排序前:";
	show(dNums, sizeof(dNums) / sizeof(dNums[0]));
	cout << "排序后:";
	sort(dNums, sizeof(dNums) / sizeof(dNums[0]));
	show(dNums, sizeof(dNums) / sizeof(dNums[0]));
	
	return 0;
}

运行结果:

排序前:56 54 12 89 43
排序后:12 43 54 56 89
排序前:78 5.7 42.8 99.1
排序后:5.7 42.8 78 99.1
排序前:78.9 23.6 77.8 98.5 33.3
排序后:23.6 33.3 77.8 78.9 98.5

函数模板:
建立一个通用函数

#include <iostream>

using namespace std;

//函数声明 
//template<typename T> void Swap(T&, T&);

//template<typename T>//模板头
//void Swap(T&, T&)
//{
//	T temp = a;
//	a = b;
//	b = temp;
//}

//书写函数模板
template<typename T> 
void sort(T tArray[], int len)
{
	T temp;
	for(int i = 0; i < len - 1; 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] <<" ";
	}
	cout << endl;
}

int main()
{
	int iNums[] = {56, 54, 12, 89, 43};
	float fNums[] = {78.0f, 5.7f, 42.8f, 99.1f};
	double dNums[] = {78.9, 23.6, 77.8, 98.5, 33.3};
	
	cout << "排序前:";
	show(iNums, sizeof(iNums) / sizeof(iNums[0]));
	cout << "排序后:";
	sort(iNums, sizeof(iNums) / sizeof(iNums[0]));
	show(iNums, sizeof(iNums) / sizeof(iNums[0]));
	
	cout << "排序前:";
	show(fNums, sizeof(fNums) / sizeof(fNums[0]));
	cout << "排序后:";
	sort(fNums, sizeof(fNums) / sizeof(fNums[0]));
	show(fNums, sizeof(fNums) / sizeof(fNums[0]));
	
	cout << "排序前:";
	show(dNums, sizeof(dNums) / sizeof(dNums[0]));
	cout << "排序后:";
	sort(dNums, sizeof(dNums) / sizeof(dNums[0]));
	show(dNums, sizeof(dNums) / sizeof(dNums[0]));
	
	return 0;
}

运行结果:

排序前:56 54 12 89 43
排序后:12 43 54 56 89
排序前:78 5.7 42.8 99.1
排序后:5.7 42.8 78 99.1
排序前:78.9 23.6 77.8 98.5 33.3
排序后:23.6 33.3 77.8 78.9 98.5
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值