读书人

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

发布时间: 2012-03-02 14:40:28 作者: rapoo

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

读书人网 >C++

热点推荐