用c++编写函数模板,返回两个值的最小值,要求能正确处理浮点型,字符型,字符串。
时间: 2024-03-21 15:40:32 浏览: 114
您好!根据您的要求,我为您编写了以下的函数模板代码:
```c++
#include <iostream>
#include <string>
template <typename T>
T min(const T& a, const T& b) {
return a < b ? a : b;
}
template <>
const char* min(const char* const& a, const char* const& b) {
return strcmp(a, b) < 0 ? a : b;
}
template <>
std::string min(const std::string& a, const std::string& b) {
return a < b ? a : b;
}
int main() {
int i = 3, j = 4;
std::cout << min(i, j) << std::endl;
double d = 3.14, e = 2.71;
std::cout << min(d, e) << std::endl;
const char* s1 = "hello";
const char* s2 = "world";
std::cout << min(s1, s2) << std::endl;
std::string str1 = "hello";
std::string str2 = "world";
std::cout << min(str1, str2) << std::endl;
return 0;
}
```
这个函数模板中,我们使用了函数重载和函数特化的技术,实现了能正确处理浮点型,字符型,字符串的最小值函数。在实现中,我们使用了 `strcmp()` 函数来比较两个 `const char*` 类型的字符串的大小关系,并使用了 `<` 运算符来比较 `std::string` 类型的字符串的大小关系。
阅读全文