减少C ++中的双精度范围

时间:2011-01-10 18:16:15

标签: c++

我已经在其他语言中看到过如何做到这一点的各种方法,但它似乎是一个常见的问题,似乎应该有一个标准的方法来做到这一点。

我想将浮点范围列表折叠为最小的表示。

2.45-3.72 3.16-6.55 7.23-8.96 8.95-10.27

会变成:

2.45-6.55 7.23-10.27

C ++中是否有一个函数或库可以将我的列表提供给我,它会为我执行还原吗?我可以很容易地写出自己的,但为什么它已经存在呢?

3 个答案:

答案 0 :(得分:2)

Boost有interval library。这并没有明确包含您所需要的内容,但可能会更容易编写它。

就个人而言,查看文档时,它让我担心图书馆不会试图让您清楚地区分封闭和开放的间隔。但这对你的目的可能并不重要。

答案 1 :(得分:2)

声音简单:

  • 从范围列表开始
  • 当前 =列表中的第一个范围
  • 当前之后有下一个范围:
    • 如果下一个重叠当前
      • 当前扩展为还包含下一步
      • 从列表中删除下一步
    • 否则:
      • 提前当前一个前进

这应该可以解决问题。

答案 2 :(得分:1)

我不认为标准会提供任何解决方案,这太具体了。