Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 减少C+中的双精度范围+;_C++ - Fatal编程技术网

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

C++ 减少C+中的双精度范围+;,c++,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++中有一个函数或库,我可以把它放在列表中,它会为我执行还原吗?我可以很容易地写我自己的,但是如果它已经存在,为什么还要麻烦呢?我认为标准不会提供任何解决方案,它太具体了。Boost有一个解决方案。这并没有明确地

我在其他语言中看到了各种方法来实现这一点,但这似乎是一个非常常见的问题,似乎应该有一种标准的方法来实现这一点

我想将浮动范围列表折叠为其最小表示形式

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++中有一个函数或库,我可以把它放在列表中,它会为我执行还原吗?我可以很容易地写我自己的,但是如果它已经存在,为什么还要麻烦呢?

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

Boost有一个解决方案。这并没有明确地包含您所需要的内容,但可能会使编写更容易

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

听起来很简单:

  • 从范围列表开始
  • 当前=列表中的第一个范围
  • 当当前之后有一个下一个范围时
    • 如果下一个与当前重叠:
      • 扩展当前以同时包含下一个
      • 从列表中删除下一步
    • 其他:
      • 前进当前前进一步

这应该可以解决问题。

Boost呢?或者其他的图书馆…?@NielW:如果你知道Boost,你自己查一下。检查您已经知道的信息源不是我的工作。@DeadMG Boost很大,很吓人,很难找到您想要的功能。也许熟悉这个问题的人可以直接向他指出。你可能会说,“如果你知道谷歌,你自己去查吧”。回答这里的任何问题都不是我们的工作。@PigBen:Boost既不大也不吓人,它的文档写得很清楚。检查Boost与检查Google不同。Boost有自己的标准——任何人都可以向谷歌扔任何垃圾,而且数量级要小很多。要求某人首先检查Boost并不是不合理的,除非他们指定他们不能使用它。我认为可以安全地假设,如果@DeadMG知道Boost库可以这样做,他会提到它。他评论的背景很重要。这不是“我不想帮你找到答案”,而是“我不知道,如果你想自己查的话,我帮你查也没有意义”。这似乎不是一个很常见的问题(至少我从来没有遇到过),而且这肯定不是你希望在标准库中找到的东西(虽然它可能在第三方库中,但我不知道)它是不存在的,但是既然你自己写很容易,为什么还要费心问呢?写真正解决这个问题的代码会很有趣,虽然它不是很难。听起来像是一个很好的面试问题。如果你看看任何有树和几何体的算法书,你会看到如何有效地实现你的re要求。我可以向您推荐。这假设范围已排序,这在问题中没有说明(但是的,它确实适用于给定的一个示例)