struct node double GHf;;mappairdoubledoublenode mp;struct data double xy;;priority_queuedata q;bool operatorconst data &aconst data &b return mpaxayG+mpaxayHmpbxbyG+mpbxbyH;从小到大排序报错了请修改
在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;//从小到大排序
}
原文地址: http://www.cveoy.top/t/topic/issB 著作权归作者所有。请勿转载和采集!