c++ - boost interval_set 或 interval_map 可以创建具有集群成员计数的集群吗?
问题描述
例如,如果我有 5 个输入间隔
[0,2]
[1,3]
[2,4]
[5,7]
[6,8]
结果应指示两个集群。集群 1
[0,4] with a count of 3
[5,8] with a count of 2
但我发现 boost::icl::interval 映射不会聚合集群,而是在边界上分裂。
例如下面的测试用例没有给我我希望的结果
using namespace boost::icl;
interval_map<double,int> map;
map += std::make_pair(interval<double>::right_open(1.0,2.0), 1);
map += std::make_pair(interval<double>::right_open(2.1,3.0), 1);
map += std::make_pair(interval<double>::right_open(2.9,4.0), 1);
std::cerr << map.iterative_size() << std::endl;
EXPECT_EQ(1, map.find(1.5)->second); // passes
EXPECT_EQ(2, map.find(1.0)->second); // passes
EXPECT_EQ(2, map.find(3.1)->second); // fails
我理解为什么这是设计使然。但是,我可以使用不同的公式或库来实现我的要求吗?
我想我要寻找的是对 boost::icl::interval_set 发生的合并次数的计数。当一个新的间隔被添加到容器中时,它要么插入一个新的唯一间隔,要么与以前的间隔合并。但是我不认为合并发生的次数被保留。
解决方案
推荐阅读
- python - Python BS4 抓取:AttributeError:“NavigableString”对象没有属性“文本”
- python - Django 模型比较不适用于浮点数据类型
- hibernate - 如果我不想在 Hibernate 中使用 @Generated 注释,还有什么其他选择?
- python - 如何在python中使用正则表达式捕获字符串并将其替换为所需的字符串
- android - Android 媒体播放器/框架种类
- php - PhpStorm:找不到类“PhpUnit\Framework\TestCase”(作曲家/自动加载)
- opencv - 使用opencv绘制形状
- fuzzing - Boofuzz 基于组值创建嵌套块
- google-apps-script - 从我的表单中保存谷歌表格中的信息
- javascript - 如何从父页面中删除 iframe 中的确认对话框?