您的位置:首页 > 其它

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

2015-08-27 22:35 393 查看
使用结构体作为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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: