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>.