C++ max() 、min() 函数进行多数比较

博客介绍了C++中max()和min()函数的使用。多数人知道其用于二数比较,如max(a, b)、min(a, b),但不知如何进行多数比较。实际上,只需在函数内用大括号括住要比较的数集合,括住提前定义的变量也能比较。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

很多人知道C++中max(),min(),函数的二数比较,即max(a, b),min(a, b)。但很多人不知道有多个数如何利用该自带的函数比较,这里给出方法:只需要在max(),min()函数内用一个大括号括住自己想要比较的数的集合即可,同理,大括号内是自己提前定义的变量也能进行比较

#include<bits/stdc++.h>
using namespace std;
int main()
{
    //取多数的最大值
    int maxx = max({1, 2, 3, 4, 5, 6});
    //取多数的最小值
    int minn = min({1, 2, 3, 4, 5, 6});

    cout << "max: " << maxx << endl;
    cout << "min: " << minn << endl;

    system("pause");
    return 0;
}

运行结果:

 

### C++ 中 `max` 和 `min` 函数的使用 #### 获取两个数值的最大值和最小值 在C++标准库中,`std::max` 和 `std::min` 函数提供了便捷的方式来比较两个值并返回较大者或较小者。对于基本数据类型的参数,这两个模板函数可以直接调用。 ```cpp #include <iostream> #include <algorithm> // 包含 maxmin 的头文件 int main() { int a = 10, b = 20; std::cout << "Max value is: " << std::max(a, b) << '\n'; // 输出较大的数 std::cout << "Min value is: " << std::min(a, b) << '\n'; // 输出较小的数 return 0; } ``` 上述代码展示了如何利用 `std::max` 和 `std::min` 来找出整型变量a和b之间的最大值与最小值[^2]。 #### 处理多个数值的情况 当涉及到多于两个元素时,可以通过链式调用来实现: ```cpp double d1 = 3.5, d2 = 7.8, d3 = 2.9; // 链接多次调用以处理三个 double 类型的数据 double largest = std::max({d1, d2, d3}); double smallest = std::min({d1, d2, d3}); std::cout << "Largest number among three doubles is : " << largest << "\n"; std::cout << "Smallest number among three doubles is : " << smallest << "\n"; ``` 这里通过传递初始化列表给 `std::max` 或 `std::min` ,可以一次性计算出三个浮点数中的最大值和最小值[^3]。 #### 自定义对象间的比较 如果想要对自定义类的对象应用这些算法,则需确保该类已重载了 `<` 运算符以便支持比较操作;之后就可以像对待内置类型一样正常使用 `std::max` 及 `std::min`. ```cpp struct Point { int x, y; }; bool operator<(const Point& lhs, const Point& rhs){ if(lhs.x != rhs.x) return lhs.x < rhs.x; else return lhs.y < rhs.y; } Point p1{1, 2}, p2{3, 4}; auto point_max = std::max(p1, p2); auto point_min = std::min(p1, p2); std::cout << "The maximum point has coordinates (" << point_max.x << ", " << point_max.y << ").\n"; std::cout << "The minimum point has coordinates (" << point_min.x << ", " << point_min.y << ").\n"; ``` 这段程序首先定义了一个简单的二维坐标结构体,并实现了相应的小于运算符来决定两点之间谁更靠前(左下角优先)。接着便能轻松地求得两者的极值。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值