RT,有一道站外题,需要使用 set。
我开了一个结构体,重载运算符的时候,我一开始选择了以下这种方式。
struct LINE{
int l , r , w ;
friend bool operator < ( LINE a , LINE b ){
if( a.w != b.w ) return a.w < b.w ;
if( a.l != b.l ) return a.l < b.l ;
if( a.r != a.r ) return a.r < b.r ;
} LINE(){}
LINE( int _l , int _r , int _w ){ l = _l , r = _r , w = _w ; }
} ;
set< LINE > s ;
一直Wa80,调了一个世纪,最后只改了一个地方,就是把 set改成这样。
struct LINE{
int l , r , w ;
/*friend bool operator < ( LINE a , LINE b ){
if( a.w != b.w ) return a.w < b.w ;
if( a.l != b.l ) return a.l < b.l ;
if( a.r != a.r ) return a.r < b.r ;
} */
inline bool operator < ( LINE b ) const{
if( w != b.w ) return w < b.w ;
if( l != b.l ) return l < b.l ;
if( r != b.r ) return r < b.r ;
}
LINE(){}
LINE( int _l , int _r , int _w ){ l = _l , r = _r , w = _w ; }
} ;
set< LINE > s ;
然后就AC了,求助大佬解决本弱的疑问