I have the following compiler error, how could I fix it?
error: instantiated from `_Tp& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const _Key&a
For a std::map you need to have overloaded operator<
on the Key type of the map, because that is how the map will insert elements into it's underlying container.
class ar {
public:
int a;
int b;
int c;
public:
ar() : a(0), b(0), c(0) {}
bool operator<(const ar& other) const;
};
bool ar::operator< (const ar& other) const // note the function has to be const!!!
{
return (other.a < a) && (other.b < b) && (other.c < c); // or some such ordering
}
When overloading operator<
, it's a good idea to in a similar fashion also overload operator>
.