您的位置:首页 > 新闻 > 资讯 > 武汉静默5天_如何制作h5动态画面_百度推广助手下载_墨子学院seo

武汉静默5天_如何制作h5动态画面_百度推广助手下载_墨子学院seo

2025/7/26 11:00:47 来源:https://blog.csdn.net/Gnar_w/article/details/148765636  浏览:    关键词:武汉静默5天_如何制作h5动态画面_百度推广助手下载_墨子学院seo
武汉静默5天_如何制作h5动态画面_百度推广助手下载_墨子学院seo

一、qBound简介

1. 定义

  • 是 Qt 框架中一个非常实用的边界限制函数(也称为 "clamp" 函数),用于将一个值限制在指定的最小值和最大值之间。
  • 头文件:#include <QtGlobal>

2. 函数原型

template <typename T>
const T &qBound(const T &min, const T &value, const T &max);

3. 作用

  • 确保返回值始终满足:min ≤ result ≤ max

4. 行为准则

  • 如果value < min,返回 min;
  • ​​​​​如果value > max,返回 max;
  • 如果 min < value < max,返回 value;

5. 等效代码

template <typename T>
const T &qBound(const T &min, const T &val, const T &max) {if (val < min)return min;if (val > max)return max;return val;
}

6. 使用示例

#include <QtGlobal>
#include <QDebug>int main() {// 整数边界限制int val1 = qBound(0, -5, 100);   // 返回 0 (小于最小值)int val2 = qBound(0, 50, 100);   // 返回 50 (在范围内)int val3 = qBound(0, 150, 100);  // 返回 100 (大于最大值)// 浮点数边界限制double dval = qBound(0.0, -1.5, 1.0);  // 返回 0.0// 颜色分量限制 (0-255)int red = qBound(0, 300, 255);  // 返回 255qDebug() << val1 << val2 << val3;  // 输出: 0 50 100qDebug() << dval;                 // 输出: 0qDebug() << red;                  // 输出: 255return 0;
}

7. 注意事项

  • 参数顺序:

        必须确保 min <= max,如果min > max,结果未定义(可能返回错值);

  • 安全用法:
qBound(std::min(a,b),value,std::max(a,b));
  • 返回值类型: 

        返回的是 const T& 引用:

        避免返回临时对象的引用,当参数是临时对象时可能有问题,如下示例;

int bad = qBound(0, 50, 100) + 10; 

二、std::clamp(C++17)

1. 定义

  • C++17标准库中引入的函数模板,用于将值限制在指定范围内。

2. 函数原型

template <typename T>
const T& clamp(const T& value, const T& low, const T& high);

3. 用法

#include <algorithm>
int val = std::clamp(rawValue, minValue, maxValue);

4. 行为准则

  • 如果 value < low,返回low;
  • 如果value > high,返回high;
  • 否则返回 value;

5. 前提条件

  • 必须满足 low <= high,否则行为未定义;

6. 使用示例

#include <algorithm>
#include <iostream>int main() {int val = 150;// 将值限制在 0-100 范围内int clamped = std::clamp(val, 0, 100);std::cout << "Original: " << val      // 输出 150<< "\nClamped: " << clamped // 输出 100<< std::endl;
}

三、区别对比

1. 边界处理

  • qBound()  :边界可能无效
  • std::clamp :已知边界有效

2. 参数顺序

// 助记:std::clamp 是 "值-低-高",qBound 是 "低-值-高"
auto cpp = std::clamp(VALUE, LOW, HIGH);
auto qt = qBound(LOW, VALUE, HIGH);

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com