clamp与clampc的区别
时间: 2023-10-16 21:32:48 浏览: 35
`clamp` 和 `clampc` 都是函数模板,用于限制一个值的范围在一个给定的区间内。它们的区别在于:
- `clamp` 可以用于任何支持小于号和大于号的类型,包括内置类型和自定义类型。当值小于区间下界时,返回区间下界;当值大于区间上界时,返回区间上界;否则返回原值。
- `clampc` 只能用于内置类型,包括 `char`、`signed char`、`unsigned char`、`short`、`unsigned short`、`int`、`unsigned int`、`long`、`unsigned long`、`long long`、`unsigned long long`、`float`、`double` 和 `long double`。当值小于区间下界时,返回区间下界;当值大于区间上界时,返回区间上界;否则返回原值。此外,`clampc` 还支持指定区间下界和上界的类型,以及对于无符号类型的区间下界默认为 0。
以下是 `clamp` 和 `clampc` 的示例用法:
```cpp
#include <iostream>
#include <algorithm>
int main() {
std::cout << std::clamp(5, 0, 10) << std::endl; // 输出 5
std::cout << std::clamp(-5, 0, 10) << std::endl; // 输出 0
std::cout << std::clamp(15, 0, 10) << std::endl; // 输出 10
std::cout << std::clampc<int>(5, 0, 10) << std::endl; // 输出 5
std::cout << std::clampc<int>(-5, 0, 10) << std::endl; // 输出 0
std::cout << std::clampc<int>(15, 0, 10) << std::endl; // 输出 10
}
```