gpt4 book ai didi

c++ - 查询Boost.icl interval_set重叠区间

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:48:46 27 4
gpt4 key购买 nike

我正在尝试使用 Boost.Icl 来查找重叠间隔的大小。

例如:给定区间 [0, 20], [10, 30], [35, 40]

interval_set<int> iset;
iset += interval<int>::open(0, 20);
iset += interval<int>::open(10, 30);
iset += interval<int>::open(35, 40);

我想查询 [20, 40] 区间的重叠长度与树中的重叠长度,应该是 15(20->30 和 35->40)

我只能找到一个 contains() 函数来检查一个点是否在区间内,但是是否有另一个函数可以执行我想要的操作?

最佳答案

看看 equal_range成员函数:

auto itRes = iset.equal_range( boost::icl::interval<int>::closed( 20, 40 ) );

for( auto it = itRes.first; it != itRes.second; ++it )
{
std::cout << "(" << it->lower() << ", " << it->upper() << ")\n";
}

itRes.first 是 (20, 30) 的迭代器,itRes->second 是 (35, 40) 的迭代器

小旁注:写 [0, 20] 表示闭区间,而 (0, 20) 表示开区间。

关于c++ - 查询Boost.icl interval_set重叠区间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18799379/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com