我的间隔被分成大量较小的分区。
没有任何空格,也没有任何重叠的间隔。
例如:(0;600)
分为:
(0;10>
(10;25>
(25;100>
(100;125>
(125;550>
(550;600)
现在我有大量的值,我需要获得每个值的分区ID。 我可以存储将此区间划分为更小间隔的值数组。 但如果所有值都属于最后一个分区,则需要通过整个数组。
所以我正在寻找存储这些间隔的更好的解决方案。我想简单 - max cca 150行长度算法,我不想使用除std。
之外的任何库答案 0 :(得分:5)
由于分区中没有“空格”,因此每个分区的末尾都是冗余的(它与下一个分区的开头相同)。
由于您对分区列表进行了排序,因此您只需使用std::upper_bound
二进制搜索。
<强> See it in action 强>
修改:更正(upper_bound
,而非lower_bound
)。
答案 1 :(得分:1)