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.27C++ 减少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有一个解决方案。这并没有明确地
<>在C++中有一个函数或库,我可以把它放在列表中,它会为我执行还原吗?我可以很容易地写我自己的,但是如果它已经存在,为什么还要麻烦呢?我认为标准不会提供任何解决方案,它太具体了。Boost有一个解决方案。这并没有明确地包含您所需要的内容,但可能会使编写更容易 就我个人而言,查看文档时,我担心库不会试图让您清楚地区分关闭间隔和打开间隔。但这对于您的目的可能并不重要。听起来很简单:
- 从范围列表开始
- 让当前=列表中的第一个范围
- 当当前之后有一个下一个范围时:
- 如果下一个与当前重叠:
- 扩展当前以同时包含下一个
- 从列表中删除下一步
- 其他:
- 前进当前前进一步
- 如果下一个与当前重叠:
这应该可以解决问题。Boost呢?或者其他的图书馆…?@NielW:如果你知道Boost,你自己查一下。检查您已经知道的信息源不是我的工作。@DeadMG Boost很大,很吓人,很难找到您想要的功能。也许熟悉这个问题的人可以直接向他指出。你可能会说,“如果你知道谷歌,你自己去查吧”。回答这里的任何问题都不是我们的工作。@PigBen:Boost既不大也不吓人,它的文档写得很清楚。检查Boost与检查Google不同。Boost有自己的标准——任何人都可以向谷歌扔任何垃圾,而且数量级要小很多。要求某人首先检查Boost并不是不合理的,除非他们指定他们不能使用它。我认为可以安全地假设,如果@DeadMG知道Boost库可以这样做,他会提到它。他评论的背景很重要。这不是“我不想帮你找到答案”,而是“我不知道,如果你想自己查的话,我帮你查也没有意义”。这似乎不是一个很常见的问题(至少我从来没有遇到过),而且这肯定不是你希望在标准库中找到的东西(虽然它可能在第三方库中,但我不知道)它是不存在的,但是既然你自己写很容易,为什么还要费心问呢?写真正解决这个问题的代码会很有趣,虽然它不是很难。听起来像是一个很好的面试问题。如果你看看任何有树和几何体的算法书,你会看到如何有效地实现你的re要求。我可以向您推荐。这假设范围已排序,这在问题中没有说明(但是的,它确实适用于给定的一个示例)