Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 是什么使得Boost'interval_map'忽略插入?_C++_Boost Icl - Fatal编程技术网

C++ 是什么使得Boost'interval_map'忽略插入?

C++ 是什么使得Boost'interval_map'忽略插入?,c++,boost-icl,C++,Boost Icl,下面的代码应该将两个相关值为0和1的间隔插入到增压间隔映射中,但它只插入一个: #include <iostream> #include <boost/icl/interval_map.hpp> using Interval = boost::icl::interval<int>; using IMap = boost::icl::interval_map<int, int>; int main() { IMap m; m += st

下面的代码应该将两个相关值为0和1的间隔插入到增压间隔映射中,但它只插入一个:

#include <iostream>

#include <boost/icl/interval_map.hpp>

using Interval = boost::icl::interval<int>;
using IMap = boost::icl::interval_map<int, int>;

int main()
{
  IMap m;
  m += std::make_pair(Interval::right_open(0, 7), 0);  // <== ignored?
  m += std::make_pair(Interval::right_open(8,15), 1);
  std::cout << m << std::endl;
}
如果我将“忽略”行的值更改为1,它将正确插入该对

这是为什么?

任何具有“无值”的域间隔在co域中都有一个隐式的“0”。反之亦然。我想下面的例子马上就有意义了:

m += std::make_pair(Interval::right_open(8,15), 1);
m -= std::make_pair(Interval::right_open(8,15), 1);
结果是一个空映射

Icl映射的行为不同,这取决于它们如何处理关联类型CodomainT的标识元素

特别是在

第二个特征与地图中标识元素的表示有关。icl地图可以是身份吸收器或身份充实器

  • 标识吸收器从不存储携带标识元素的值对(k,0)
  • 标识充实器存储值对(k,0)

我认为该页面更好地描述了身份元素的情况。你可以更新你的答案,我会接受的it@HEKTO你说得很对。我记得读过,但找不到那一页。确实好多了。
m += std::make_pair(Interval::right_open(8,15), 1);
m -= std::make_pair(Interval::right_open(8,15), 1);