使用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是相同的。
实际情况中可以利用到这一特性。
本文详细介绍了在C++中如何通过重载小于运算符(<)来实现struct类型作为map的键值,从而区分不同的元素。通过具体代码示例,展示了如何根据struct中的多个成员变量来确定键值的唯一性,这对于理解和应用C++ STL中的map容器至关重要。
1999

被折叠的 条评论
为什么被折叠?



