有边界的基本体
Bounded primitives
本文关键字:边界 更新时间:2023-10-16
在Java或C++中有类似有界基元的东西吗?我想要的是一个变量,它的作用就像浮点或双精度,只是它有一个用户可设置的最小值和最大值。
例如,如果我要设置这样一个浮点变量,使其绑定在0和100之间,我可以尝试将其设置为任何数字,并且通常以与使用基元相同的方式使用它,只是当分配给它的值大于允许的最大值时,它会取最大值,当它小于最小值时,会取最小值。我希望能够对它进行基本的运算,比如加法、乘法和减法,尤其是使用我在类似的正态变量上使用的运算符。
这些存在于某个图书馆吗?
您可以为此设计这样一个类(在C++中)。基本设计如下:-
class Bound
{
private:
const int min = 10;
const int max = 100;
int var;
public:
Bound( int x )
{
if ( x > max )
var = max;
else if ( x < min )
var = min;
else
var = x;
}
Bound& operator == ( int x )
{
// On same line as constructor
}
};
您可以将其转换为模板以支持其他数据类型。
没有这样的构建。此外,Java不允许运算符重载,因此您永远无法编写以下内容:
myBoundedInt i = 13;
但是:
myBoundedInt i = new myBoundedInt(13);
//...
i.setValue(42);
据我所知,Dlang确实为类提供了内置断言,以保证在对象的整个生命周期内满足某些条件。也许你想调查一下。
相关文章:
- std::当在256字节边界上写入整数时,流的奇怪行为
- 使用不变量来确定二分搜索中的边界条件
- 跨 DLL 边界访问虚拟方法是否安全/可能?
- 在 64 位边界上对齐C++结构数组?
- std::数组边界检查如何工作?
- CGAL:如何创建填充边界曲线的曲面网格?
- 在 c++ 中是否允许创建具有运行时边界的数组?
- 是否可以跨 dll 边界返回常量引用/指向 std::vectors?
- C++11:16 字节原子<>变量是否在 16 字节边界上自动对齐,从而允许CMPXCHG16B指令?
- 转换引用对象的边界框?
- 将迭代器作为 3 个元素的滑动窗口,可以超调边界(可能使用 Boost)
- 算法设计:用边界数字表示 2D 网格的最佳方式,以C++?
- 查找矩形的边界集
- 在sfml中获取可转换的边界框
- SystemC sc_signal数组内存边界
- 如何处理libstdc++跨执行边界抛出的异常
- BoostSpirit.Qi-针对原始数据类型进行边界检查
- 在运行时为随机分布类成员设置最小和最大边界?
- Java 中的边界椭圆实现
- map int<-->int, 1:N, 已知边界