需要一种“间隔范围”计算

时间:2019-01-12 13:53:33

标签: c++ types complex-data-types

我的C ++程序需要一个库。 但是问题是,我不知道我想要的这种数据类型的名称。

我有NPAPI插件(我知道此API已弃用,并已从现代浏览器中删除),该插件可发布到服务器 HTTP范围请求。请求是异步的,数据可能以任何顺序以任何块大小发送。

所以我需要跟踪我已经从服务器请求的范围。

例如,如果最初我请求字节[10-20](包括),然后我请求[30-40]数据类型,则我需要将其保持为两个间隔:

[10-20],[30-40]

但是,如果我要求[21-29]甚至[15-35],则应将其合并为一个间隔:

[10-20],[30-40] + [15-35] = [10-40]

当请求的块到达时,我也需要减去:

[10-40] - [20-30] = [10-19],[31-40]

(已请求-到达=我们还在等待中)

我看过 boost :: numeric :: intervals 库,但乍一看它对于这个任务来说太大了(1583个文件,'。/ dist / bin /之后的13 Mb源代码bcp数字/间隔〜/ boost')。

此外, GNU ddrescue 里面也有一些类似的算法,但是代码不是那里的库,它与应用程序的详细信息耦合太多。

更新:

这是我在途中发现的东西:

A container for integer intervals, such as RangeSet, for C++

https://en.wikipedia.org/wiki/Interval_tree

Boost.ICL

NCBI C ++工具包CIntervalTree

0 个答案:

没有答案