Rob*_*oli 11 c++ encapsulation integer class modulus
我有一个在我正在编写的代码中非常常见的问题,我希望有一个整数只能存在于范围为[start,end]的特定范围内.基本上我希望能够做类似以下的事情:
cyclic_int ci(4, 8);
ci = 4;
assert(ci == 4);
ci += 3;
assert(ci == 7);
ci += 2;
assert(ci == 5);
assert(ci == 13);
这应该都归于真实.基本上,类自动为我应用模数(%),整数充当我初始化它的范围内的循环整数.我可以自己实现这个类,并重载所有常用运算符,使其与普通整数很好地工作,但它似乎是一个有用的类,以前有人可能已经做过.
所以我的问题是,是否有一个像这样的普通类,每个人都在使用或者我想以错误的方式做这个,并且有更好的简单方法.(我的目标是不必经常考虑应用%运算符或任何类似的函数)谢谢.
编辑:我决定写一个自己的,只是为了好玩:http://github.com/robertmassaioli/wrapping_number
我从未使用过它,它还不是官方的 Boost 库,但 Boost.ConstrainedValue 有一个wrapping_int看起来与您正在寻找的非常相似的库。
虽然它还不是 Boost 的一部分,但最近经过了审查,并且 IIUC 有条件接受:http ://lists.boost.org/boost-announce/2010/09/0265.php
该库位于http://rk.dl.pl/f/constrained_value.zip
文档位于http://rk.dl.pl/r/constrained_value