实验五、模板 实验目的:(1)了解模板的含义及作用 (2)了解template, class、typename三个关键词的含义,并掌握其使用方法 实验要求:编写函数模板,返回两个值的最小值,要求能正确处理浮点型,字符型,字符串。
时间: 2024-03-22 19:42:28 浏览: 15
好的,我明白了你的问题。针对你的要求,我可以给出如下的代码示例:
```C++
#include <iostream>
#include <string>
using namespace std;
template<typename T>
T get_min(T a, T b) {
return a < b ? a : b;
}
template<>
const char* get_min<const char*>(const char* a, const char* b) {
return strcmp(a, b) < 0 ? a : b;
}
int main() {
int a = 5, b = 3;
float c = 1.2, d = 3.4;
char e = 'a', f = 'b';
string g = "hello", h = "world";
const char* i = "cpp", *j = "python";
cout << get_min(a, b) << endl;
cout << get_min(c, d) << endl;
cout << get_min(e, f) << endl;
cout << get_min(g, h) << endl;
cout << get_min(i, j) << endl;
return 0;
}
```
上述代码中,我们定义了一个函数模板 `get_min()`,用于返回两个值的最小值。在模板函数中,我们使用了关键词 `typename` 或 `class` 来声明模板类型,然后使用模板类型 `T` 来代替具体类型。
当模板类型为字符型 `const char*` 时,我们使用了模板特化的技术,重新定义了函数 `get_min()`,以处理字符串类型的数据。在特化版本中,我们使用了 C++ 标准库中的 `strcmp()` 函数来比较两个字符串的大小,并返回较小的那个。
当我们在 `main()` 函数中调用 `get_min()` 函数时,编译器会自动根据参数类型推导出模板类型,并调用相应的函数模板来计算最小值。最终,程序会输出各种类型数据的最小值。
希望这个代码示例可以帮助你理解模板的作用及使用方法。