2016-06-11 6 views
1

Ich versuche, meinen eigenen Schlüssel Komparator für std :: map zu implementieren wie folgt:Lambda Schlüssel Komparator für Karte

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

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

wo OffsetCoords ist struct, Vektor von x, y-Werte mit überladenen operator==

Code baut gut, aber wenn ich cost_so_far.count(some_offsetcoords_variable) aufrufen, löst es Ausnahme "Ausdruck: ungültiger Komparator" aus.

Was ist der richtige Weg, dies zu tun?

+2

Karte benötigt weniger als. –

+0

http://stackoverflow.com/questions/9040689/stl-less-operator-and-invalid-operator-error –

+0

Diese Frage erfüllt nicht die Anforderungen für eine [MCVE] und kann daher nicht beantwortet werden. –

Antwort

0

Das binäre Prädikat Comp für std::map<Key, Value, Comp> Bedürfnisse verwendet Key eine strict weak order auf Objekte des Typs zu implementieren. Die strikte bezieht sich auf die Tatsache, dass comp(x, x)false für alle Objekte des Typs Key mit Comp verwendet. Für das von Ihnen definierte Prädikat ist das nicht der Fall.

Verwandte Themen