用c++编写函数模板,返回两个值的最小值,要求能正确处理浮点型,字符型,字符串。
时间: 2024-03-07 19:48:03 浏览: 23
可以使用函数模板来实现这个功能,如下所示:
```c++
#include <iostream>
#include <string>
using namespace std;
template<typename T>
T min_value(T a, T b) {
return (a < b) ? a : b;
}
template<>
string min_value<string>(string a, string b) {
return (a.compare(b) < 0) ? a : b;
}
int main() {
int a = 10, b = 20;
float c = 1.23, d = 4.56;
char e = 'a', f = 'z';
string g = "hello", h = "world";
cout << "min_value(" << a << ", " << b << ") = " << min_value(a, b) << endl;
cout << "min_value(" << c << ", " << d << ") = " << min_value(c, d) << endl;
cout << "min_value(" << e << ", " << f << ") = " << min_value(e, f) << endl;
cout << "min_value(" << g << ", " << h << ") = " << min_value(g, h) << endl;
return 0;
}
```
在上述代码中,我们首先定义了一个通用的函数模板 `min_value`,用来返回两个值的最小值。对于字符串类型,我们需要特化模板函数,因为字符串类型不能像数字类型那样直接比较大小,需要使用 `compare` 方法进行比较。
在 `main` 函数中,我们分别测试了整数、浮点数、字符和字符串类型的最小值。