地图

时间:2016-06-11 22:40:40

标签: c++

我试图为std :: map实现我自己的关键比较器,如下所示:

auto cost_compare = [](const OffsetCoords& left, const OffsetCoords& right) { 
return (left == right); };

std::map<OffsetCoords, int, decltype(cost_compare)> cost_so_far(cost_compare);

其中OffsetCoords是结构,x的矢量,y值超载operator==

代码构建正常,但是当我调用cost_so_far.count(some_offsetcoords_variable)时,它会抛出异常&#39;表达式:无效的比较器&#39;。

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

用于Comp的二元谓词std::map<Key, Value, Comp>需要在Key类型的对象上实现strict weak order strict 指的是comp(x, x)为与false一起使用的Key类型的所有对象产生Comp的事实。对于您定义的谓词 not case。