模板是c++的高级特性分为:
- 函数模板。
- 类模板。
c++标准模板库(STL)
//函数模板一般格式
/*
template <类型形式参数表> 返回值 函数名(形式参数,...){//函数体
}
*/// template 关键字
// <> 表示模板参数(两种)
// 1.类型参数(class / typedef)
// 2.非类型参数(一般为常数)
#include<iostream>
using namespace std;
template <class Type>
Type max_us(Type x, Type y) {
return x > y ? x : y;
}
int main() {
int i = max_us(8, 9);
cout << i << endl;
return 0;
}
如果两数类型不一致,便会有歧义,编译器不能识别。例如:
//歧义
//显示标识模板
float k = max_us<float>(8.1, 3);
需要添加显示标识符。
函数模板是一个“框架”,它不是真正可以编译生成代码的程序,而模板函数是把函数模板中的类型参数实例化后生成的函数,它和普通函数本质是相同的,可以生成可执行代码。
数组模板使用:
//数组模板
template <class Type,int len>
Type max_arr(Type arr[len]) {
Type ret = arr[0];
for (int i = 1; i < len; i++)
{
ret = (arr[i] > ret ? arr[i] : ret);
}
return ret;
}
//数组模板使用
int max_a = max_arr<int, 5>(a);
cout << max_a << endl;
重载模板使用:
//重载函数模板,实现字符、字符串比较
char* max_us(char* a, char* b) {
if (strcmp(a,b))
{
return a;
}
else
{
return b;
}
}