c➕➕求三个变量最大值的函数模版
时间: 2024-02-09 11:09:04 浏览: 24
以下是求三个变量最大值的 C++ 函数模板示例:
```cpp
template<typename T>
T max3(T a, T b, T c) {
return std::max(std::max(a, b), c);
}
```
这个函数模板可以处理任意类型的参数,只要这些类型实现了 `>` 运算符和 `std::max` 算法。可以通过以下方式调用:
```cpp
int x = 1, y = 2, z = 3;
int m = max3(x, y, z);
```
注意,这个函数模板返回的是三个参数中的最大值,如果需要返回最大值的索引或者多个最大值,需要修改函数实现。
相关问题
R6-2 求最大值函数模板
以下是R6-2求最大值函数模板的示例代码:
```c++
#include <iostream>
using namespace std;
template <typename T>
T max(T a, T b, T c) {
T max_val = a;
if (b > max_val) {
max_val = b;
}
if (c > max_val) {
max_val = c;
}
return max_val;
}
int main() {
int m1 = 1, m2 = 2, m3 = 3;
double n1 = 1.1, n2 = 2.2, n3 = 3.3;
char z1 = 'a', z2 = 'b', z3 = 'c';
cout << "m-max:" << max(m1, m2, m3) << endl;
cout << "n-max:" << max(n1, n2, n3) << endl;
cout << "z-max:" << max(z1, z2, z3) << endl;
return 0;
}
```
该示例代码中定义了一个模板函数`max`,可以接受三个参数,返回三个参数中的最大值。在`main`函数中,分别定义了三个`int`类型、`double`类型和`char`类型的变量,并调用`max`函数求出它们的最大值并输出。
用C++编写一个程序完成下列题目,利用函数模板实现三个数取最大值和最小值功能,要求支持 int、float、double。
好的,以下是实现这个功能的 C++ 代码:
```cpp
#include <iostream>
#include <algorithm>
template<typename T>
T getMax(T a, T b, T c) {
return std::max(std::max(a, b), c);
}
template<typename T>
T getMin(T a, T b, T c) {
return std::min(std::min(a, b), c);
}
int main() {
int a = 1, b = 2, c = 3;
float d = 1.1, e = 2.2, f = 3.3;
double g = 1.11, h = 2.22, i = 3.33;
std::cout << "Max of int: " << getMax(a, b, c) << std::endl;
std::cout << "Max of float: " << getMax(d, e, f) << std::endl;
std::cout << "Max of double: " << getMax(g, h, i) << std::endl;
std::cout << "Min of int: " << getMin(a, b, c) << std::endl;
std::cout << "Min of float: " << getMin(d, e, f) << std::endl;
std::cout << "Min of double: " << getMin(g, h, i) << std::endl;
return 0;
}
```
我们定义了两个函数模板:`getMax` 和 `getMin`,用于分别获取三个数中的最大值和最小值。这两个函数模板都接受三个参数,类型为 `T`,即可以是 `int`、`float`、`double` 中的任意一种。
在 `main` 函数中,我们分别定义了三个 `int`、`float`、`double` 类型的变量,并分别调用了 `getMax` 和 `getMin` 函数模板,输出了结果。
这个程序可以输出以下结果:
```
Max of int: 3
Max of float: 3.3
Max of double: 3.33
Min of int: 1
Min of float: 1.1
Min of double: 1.11
```