设计两个函数模板,其功能分别是返回两个值中的较大者和返回多个值中的较大者。要求不仅能够处理整型、实型等数值型数据,而且能够正确处理字符串。
时间: 2024-03-23 21:40:09 浏览: 78
好的,我可以为你提供以下两个函数模板:
1. 返回两个值中的较大者
```c++
template<typename T>
T max(T a, T b) {
return a > b ? a : b;
}
```
2. 返回多个值中的较大者
```c++
#include <initializer_list>
#include <algorithm>
#include <iostream>
#include <string>
template<typename T>
T max(std::initializer_list<T> values) {
return *std::max_element(values.begin(), values.end());
}
```
这两个函数模板都支持整型、实型等数值型数据,以及字符串等自定义类型。你可以直接调用这两个函数模板,它们会自动根据传入的参数类型进行类型推导,返回较大的值。例如:
```c++
int a = 10, b = 20;
std::cout << max(a, b) << std::endl; // 输出 20
double c = 3.14, d = 2.71;
std::cout << max(c, d) << std::endl; // 输出 3.14
std::string str1 = "hello", str2 = "world";
std::cout << max(str1, str2) << std::endl; // 输出 "world"
std::cout << max({1, 2, 3, 4, 5}) << std::endl; // 输出 5
```
希望这些对你有所帮助!