Boost.Icl如何为没有无穷大的类型定义无限端点?

时间:2011-05-14 08:25:35

标签: c++ boost intervals

Boost.Icl有四种区间类型: 关闭[a,b]以获得< = x< = b, 打开(a,b)a< x< b, 左开(a,b)为< x< = b, rigth-open [a,b)对于< = x< b。

这对于具有显式最小值和最大值的类型来说已经足够了:double,所有整数,boost::time_intervalboost::ptime,... 但是有类似stringvector的类型,它们具有最小值(即空字符串)但不是最大值。无法定义具有无限右端点的区间。 间隔(以及具有无限右端的间隔)对字符串和向量有意义,用于分片。

最简单的解决方案似乎使用tuple<bool, string>代替string(true表示无穷大,因此这样的一对将比任何字符串都大)。但它会迫使我在程序中的任何地方使用该对而不是字符串(或者在任何间隔操作之前创建对,这意味着字符串复制)。

有更好的解决方案吗? 也许在Icl中添加第5和第6个区间类型:closed_to_infinity [a,+ inf]和open_to_infinity(a,+ inf)?

0 个答案:

没有答案