开发工具与关键技术: Visual Studio / C++
作者:何文涛
撰写时间:2019-6-25
C++中的两种模板:
函数模板和类模板。
模板把函数或者类需要处理的数据类型参数化,其表现为参数多态性。
模板用于表达逻辑结构相同,但是具有的类型不同的数据对象的同的通用行为。
模板作用:使得程序可以从逻辑上抽象,把被处理的对象类型作为参数传递,
对不同数据类型的操作完全相同,用函数模板实现更为简洁方便。
模板说明:
声明模板中使用的类属参数,表现形式为:
template < 类型形式参数表 >
例如:
template < typename T >
函数模板与模板函数:
template < 类型形式参数表 >
类型 函数名称(形式参数表)
{
语句序列
}
函数模板定义由模板说明和函数定义组成。
模板定义以模板说明开始。类属参数必须在模板定义中至少出现一次。
函数参数标志可以使用类属类型作为参数,当然也可以使用一般类型参数。
函数模板简单应用:
定义一个选择排序法的函数模板,
template//定义函数模板
void SelectRank(Maopao a[],int siza)//模板函数
{
for (int i = 0; i < siza-1; i++)//选择排序法
{
int wind=i;//临时下标
for (int j = i + 1; j < siza; j++)
{
if (a[wind] > a[j]) {//判断大小
wind = j;
}
}
if (wind!=i)
{
Maopao temp=a[i]; //找到小的数组下标后进行位置互换
a[i] = a[wind];
a[wind] = temp;
}
}
}
定义了一个选择排序法的模板函数,对传递过来的值进行排序,
选择排序通过了两个for来进行遍历数组,然后进行判断大小进行位置互换。
template
void shwo(Maopao a[], int siza)//输出方法
{
for (int i = 0; i < siza; i++)//循环输出数组
{
cout << a[i] << ends;
}
}
输出方法:封装了一个输出方法,输出模板函数的数组。
主函数部分:
声明数组并且通过一个for循环来进行输入,然后调用模板函数,参数是输入的数组以及长度,最后调用模板函数的输出方法,进行输出
输出结果:
输入了五个乱序的数组,输入回车后运行选择排序法的模板函数,输出结果为排序好后的结果,为顺序排序。