基本和子函数的写法相同,可以加inline
inline int area()
{
if(!cnt) return 0;
else return (rx-lx)*(ly-ry);
}
重定义运算符最好用友元函数
friend bool operator *(rectangle x,rectangle y)
{
if(!x.cnt||!y.cnt) return 0;
if(x.in_rec(y.lx,y.ly)||x.in_rec(y.lx,y.ry)
||x.in_rec(y.rx,y.ly)||x.in_rec(y.rx,y.ry)) return 1;
else return 0;
}
再粘上全部的struct
struct rectangle{
int lx,ly,rx,ry;
bool cnt;
inline void add(int x,int y)
{
if(!cnt)
{
lx=rx=x;
ly=ry=y;
cnt=1;
}
else
{
lx=min(lx,x); ly=max(ly,y);
rx=max(rx,x); ry=min(ry,y);
}
}
inline int area()
{
if(!cnt) return 0;
else return (rx-lx)*(ly-ry);
}
inline bool in_rec(int x,int y)
{
if(x>=lx&&x<=rx&&y>=ry&&y<=ly) return 1;
else return 0;
}
friend bool operator *(rectangle x,rectangle y)
{
if(!x.cnt||!y.cnt) return 0;
if(x.in_rec(y.lx,y.ly)||x.in_rec(y.lx,y.ry)
||x.in_rec(y.rx,y.ly)||x.in_rec(y.rx,y.ry)) return 1;
else return 0;
}
}rec[10];