使用struct为map 的key需要重载运算符 小于号(<),重载过程中使用的变量是区分key之间的唯一标准。
例如:
struct posn
{
int x,y,dis; char drcn;
bool operator < (const posn& b)const{
return x<b.x;
}
}
};
则对于map中的key,只要其中的x相同,则value都相同。
而以下代码:
struct posn
{
int x,y,dis; char drcn;
bool operator < (const posn& b)const{
if(x!=b.x) return x<b.x;
else{
if(y!=b.y) return y<b.y;
else return drcn<b.drcn;
}
}
};
则可以区分x,y,drcn变量,而dis却没有。
即(posn){1,1,1,‘N’}和(posn){1,1,3,‘N’}对应的value是相同的。
实际情况中可以利用到这一特性。