我试图为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;。
这样做的正确方法是什么?
答案 0 :(得分:0)
用于Comp
的二元谓词std::map<Key, Value, Comp>
需要在Key
类型的对象上实现strict weak order。 strict 指的是comp(x, x)
为与false
一起使用的Key
类型的所有对象产生Comp
的事实。对于您定义的谓词 not case。