再问段看不懂的代码,这样写有啥用解决方法

再问段看不懂的代码,这样写有啥用
#include <map>
struct A 
{
  int k;
int j; 
};
struct A_Less
{
inline bool operator()( const A& _a1 , const A& _a2 )const
{
return (_a1.k*16+_a1.j)<(_a2.k*16+_a2.j);
}
};

std::map<A, void*, A_Less> A_map;

------解决方案--------------------
A_Less中重载了操作符()
C/C++ code

int main()
{
    struct A a,b;    
    struct A_Less al;
    a.j = 1;
    a.k = 2;
    b.j = 3;
    b.k = 4;
    bool bRet = al(a,b);
    
    string sMsg = bRet ? "b>a" : "a>b" ;
    cout<<sMsg.c_str()<<endl;

------解决方案--------------------
stl里的容器都需要有比较大小的函数,如果没提供,就使用默认的。
当默认的函数,不适合用来比较成员的大小时,就得提供一个自己的