📅  最后修改于: 2023-12-03 15:13:53.840000             🧑  作者: Mango
在C++ 17中,引入了std::clamp函数,该函数用于将一个值限制在一个特定的范围内。它非常有用,并且让开发者能快速而简单地对值进行限制,而不需要手工写一堆if-else语句。
template <typename T>
constexpr const T& clamp(const T& value, const T& low, const T& high);
限制后的值,类型和第一个参数的类型相同。
#include <iostream>
#include <algorithm>
int main() {
int a = 10, b = 5, c = 15;
int clamped_a = std::clamp(a, b, c);
std::cout << clamped_a << std::endl;
int clamped_b = std::clamp(a, c, b);
std::cout << clamped_b << std::endl;
int clamped_c = std::clamp(c, a, b);
std::cout << clamped_c << std::endl;
return 0;
}
输出:
10
10
10
#include <iostream>
#include <algorithm>
int main() {
double a = 2.5, b = 5.0, c = 10.0;
double clamped_a = std::clamp(a, b, c);
std::cout << clamped_a << std::endl;
double clamped_b = std::clamp(a, c, b);
std::cout << clamped_b << std::endl;
double clamped_c = std::clamp(c, a, b);
std::cout << clamped_c << std::endl;
return 0;
}
输出:
5
5
5
std::clamp是一个非常方便的函数,可以避免繁琐的if-else语句。在编写C++ 17的程序时,我们应该充分利用std::clamp函数来提高代码的可读性和可维护性。