编写一个函数模板,它返回两个值中的较大者,要求能正确处理整数、浮点数、字符串三种不同类型的数据。 程序命名为Lab12_2.cpp。
时间: 2024-02-09 12:08:26 浏览: 44
好的,下面是满足您要求的Lab12_2.cpp程序代码:
```c++
#include <iostream>
#include <string>
using namespace std;
template <typename Type>
Type max(Type a, Type b) {
return a > b ? a : b;
}
int main() {
int int1 = 1, int2 = 2;
float float1 = 1.1, float2 = 2.2;
string str1 = "hello", str2 = "world";
cout << "max int: " << max(int1, int2) << endl;
cout << "max float: " << max(float1, float2) << endl;
cout << "max string: " << max(str1, str2) << endl;
return 0;
}
```
在这个程序中,我们使用了函数模板来实现求两个值中的较大者。由于函数模板是一个通用的模板,它可以处理不同类型的数据。在这里,我们使用了三种不同类型的数据,包括整数、浮点数和字符串。在main函数中,我们分别传入了不同类型的数据,然后调用max函数模板来求两个值中的较大者,并输出结果。
相关问题
编写一个函数模板,要求它返回两个值之中的最小者。但同时要确保正确处理字符串
以下是一个返回最小值的函数模板,它可以处理整数、浮点数和字符串类型的数据:
```cpp
#include <iostream>
#include <string>
template <typename T>
T min(T a, T b) {
return a < b ? a : b;
}
template <>
std::string min(std::string a, std::string b) {
return a < b ? a : b;
}
int main() {
int a = 3, b = 4;
std::cout << min(a, b) << std::endl; // 输出 3
double c = 2.3, d = 1.2;
std::cout << min(c, d) << std::endl; // 输出 1.2
std::string e = "hello", f = "world";
std::cout << min(e, f) << std::endl; // 输出 hello
return 0;
}
```
在上面的代码中,我们首先定义了一个通用的模板函数 `min`,其参数类型为 `T`,返回类型也是 `T`。该函数比较两个参数的大小,返回最小值。
然后我们针对字符串类型,定义了一个特化版本的 `min` 函数,该函数比较两个字符串的大小,返回字典序较小的字符串。
在 `main` 函数中,我们分别测试了三种类型的数据,都能正确返回最小值。
用c++编写函数模板,返回两个值的最小值,要求能正确处理浮点型,字符型,字符串。
可以使用函数模板来实现这个功能,如下所示:
```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` 函数中,我们分别测试了整数、浮点数、字符和字符串类型的最小值。