再问段看不懂的代码,这样写有啥用解决方法
再问段看不懂的代码,这样写有啥用
#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中重载了操作符()
#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里的容器都需要有比较大小的函数,如果没提供,就使用默认的。
当默认的函数,不适合用来比较成员的大小时,就得提供一个自己的