在C++中,map容器的索引应该使用pair类型作为键,而不是使用逗号分隔的两个值。因此,将 mp[a.x,a.y]mp[b.x,b.y] 改为 mp[make_pair(a.x,a.y)]mp[make_pair(b.x,b.y)] 可以解决问题。

修改后的代码如下:

struct node{
    double G,H,f;
};
map<pair<double,double>,node> mp;
struct data{
    double x,y;
};
priority_queue<data> q;
bool operator<(const data &a,const data &b){
    return mp[make_pair(a.x,a.y)].G+mp[make_pair(a.x,a.y)].H>mp[make_pair(b.x,b.y)].G+mp[make_pair(b.x,b.y)].H;//从小到大排序
}
struct node	double GHf;;mappairdoubledoublenode mp;struct data	double xy;;priority_queuedata q;bool operatorconst data &aconst data &b	return mpaxayG+mpaxayHmpbxbyG+mpbxbyH;从小到大排序报错了请修改

原文地址: http://www.cveoy.top/t/topic/issB 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录