boost_set_set或interval_map是否可以创建具有集群成员计数的集群?

时间:2019-01-23 16:23:39

标签: c++ boost-icl

例如,如果我有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发生的合并次数的计数。将新间隔添加到容器后,它要么插入新的唯一间隔,要么与以前的间隔合并。但是我认为合并发生的次数没有保留。

0 个答案:

没有答案