我正在处理 C++ 程序中的间隔。我想要下面的东西:
我想在 for 循环中迭代地添加间隔。假设我的第一个区间是 (0, 5)。我想添加一个区间 (3,6),使得生成的区间集应该是 (0,3), (3,6)。如果我添加的第三个区间是 (4,7),那么我的结果区间集应该是 (0,3)、(3,4)、(4,7)。
知道我应该从 boost 库中使用哪种类型的间隔容器吗?任何示例程序?
这是我尝试过的......
int main()
{
icl::interval_map<double, std::string> add_map;
using ival = icl::interval<double>;
add_map.add({ival::open(1., 2.5), "A1"});
std::cout<<"adding first interval-----"<<"\n";
for(auto iter : add_map)
std::cout << iter.first << ": " << iter.second << ", "; std::cout << "\n";
add_map.add({ival::open(1.5, 5.), "B1"});
std::cout<<"adding second interval-----"<<"\n";
for(auto iter : add_map)
std::cout << iter.first << ": " << iter.second << ", "; std::cout << "\n";
//after adding second interval, i have to get something like (1,1.5]: A1, (1.5,5): B1
return 0;
}
但我得到以下输出:添加第一个间隔-----(1,2.5):A1,
添加第二个区间----- (1,1.5]: A1, (1.5,2.5): A1B1, [2.5,5): B1,