九度oj--题目1204:农夫、羊、菜和狼的故事(map 用结构体作key)

使用结构体作为map的key时,一定要重载那个结构体的<运算符,否则报错(map根据重载的<符号来区分各个key,因此,重载<时一定要保证标识结构体的属性集合一定要全部重载到<中)

例子:



typedef struct ma
{
public:
    nod left;
    nod right;
    int now;
    bool operator < (const ma &other) const
    {
        if ((now<other.now)
                ||(now==other.now&&left.status[0]<other.left.status[0])
                ||(now==other.now&&left.status[0]==other.left.status[0]&&left.status[1]<other.left.status[1])
                ||(now==other.now&&left.status[0]==other.left.status[0]&&left.status[1]==other.left.status[1]&&left.status[2]<other.left.status[2])
           )
        {
            return true;
        }
        return false;
    }
};


注意:如果重载<时不把status[0,1,2]重载进去,那么map只根据重载中的now来区分key。会导致本来不一样的key变成一样的,出现bug。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值