я столкнулся с ошибкой со следующим кодомC++ станд :: карта сравнить метод
struct MapKey {
std::string x;
std::string y;
}
std::map<MapKey, int> m;
if (m.find(key) != m.end()) {
......
}
Я получаю говорит об ошибке,
no match for "operator<" in '__x < __y'
Я считаю, что проблема заключается в том, что MapKey необходимо иметь сравнение метод, мне интересно, как я могу реализовать его для Mapkey. Например,
struct MapKey {
bool operator<(const MapKey &key) const {
... what shall I put here? ...
}
std::string x;
std::string y;
}
Спасибо.
Спасибо за ваш ответ. Есть ли какая-то особая причина, по которой определить оператор <как свободную функцию, но не как функцию-член MapKey? Благодарю. – 2607
@ 2607: Это технически возможно, но, как правило, для операторов, которые не являются функциями-членами (например, операторами присваивания), функции-члены считаются плохой практикой. – ildjarn