I';我正在尝试实现一个C++;Kruskal算法的程序,它要求我按权重对图进行排序。如何按权重对结构进行排序 我试图实现一个C++程序,用于Kraskar算法,它需要我按权重排序图。我正在尝试使用向量(结构),但是排序函数似乎给出了所有的零点。 #include <vector> #include <iostream> #include <algorithm> using namespace std; struct graph { int src; int dst; int weight; }; bool compare(struct graph a,struct graph b) { return (&a.weight < &b.weight); } int main() { int ver,edges; cin >> ver >> edges; vector<graph> G(100); for(int i=0; i<edges; ++i) { cin >> G[i].src >> G[i].dst >> G[i].weight; } sort(G.begin(),G.end(),compare); //trying to sort by weights for(int i=0; i<edges; ++i) { cout << G[i].src << G[i].dst << G[i].weight << endl; } } #包括 #包括 #包括 使用名称空间std; 结构图 { int-src; int dst; 整数权重; }; 布尔比较(结构图a、结构图b) { 返回(&a.重量>版本>>边缘; 载体G(100); 对于(int i=0;i>G[i]。src>>G[i]。dst>>G[i]。重量; } 排序(G.begin(),G.end(),compare);//尝试按权重排序 对于(int i=0;i

I';我正在尝试实现一个C++;Kruskal算法的程序,它要求我按权重对图进行排序。如何按权重对结构进行排序 我试图实现一个C++程序,用于Kraskar算法,它需要我按权重排序图。我正在尝试使用向量(结构),但是排序函数似乎给出了所有的零点。 #include <vector> #include <iostream> #include <algorithm> using namespace std; struct graph { int src; int dst; int weight; }; bool compare(struct graph a,struct graph b) { return (&a.weight < &b.weight); } int main() { int ver,edges; cin >> ver >> edges; vector<graph> G(100); for(int i=0; i<edges; ++i) { cin >> G[i].src >> G[i].dst >> G[i].weight; } sort(G.begin(),G.end(),compare); //trying to sort by weights for(int i=0; i<edges; ++i) { cout << G[i].src << G[i].dst << G[i].weight << endl; } } #包括 #包括 #包括 使用名称空间std; 结构图 { int-src; int dst; 整数权重; }; 布尔比较(结构图a、结构图b) { 返回(&a.重量>版本>>边缘; 载体G(100); 对于(int i=0;i>G[i]。src>>G[i]。dst>>G[i]。重量; } 排序(G.begin(),G.end(),compare);//尝试按权重排序 对于(int i=0;i,c++,c++11,vector,struct,C++,C++11,Vector,Struct,中的&) bool compare(struct graph a,struct graph b) { return (&a.weight < &b.weight); } 最后,您可以通过lambda直接执行此操作,如中所示 std::sort(G.begin(), G.end(),[](graph const&l, graph const&r) { return l.weight < r.

中的
&

bool compare(struct graph a,struct graph b)
{
  return (&a.weight < &b.weight);
}
最后,您可以通过lambda直接执行此操作,如中所示

std::sort(G.begin(), G.end(),[](graph const&l, graph const&r)
                             { return l.weight < r.weight; });
std::sort(G.begin(),G.end(),[](图常量和l,图常量和r)
{返回l.weight
中的
&

bool compare(struct graph a,struct graph b)
{
  return (&a.weight < &b.weight);
}
最后,您可以通过lambda直接执行此操作,如中所示

std::sort(G.begin(), G.end(),[](graph const&l, graph const&r)
                             { return l.weight < r.weight; });
std::sort(G.begin(),G.end(),[](图常量和l,图常量和r)
{返回l.weight
这是我的荣幸——事实上我很感激你喜欢它,不是每个人都会喜欢别人那样摆弄他们的答案。@Walter——我的英语很差,欢迎任何帮助;但是,在这种情况下,你的编辑也大大改进了我的答案。这是我的荣幸——事实上我很感激你喜欢它,不是每个人都喜欢它我倒希望有人能像那样摆弄他们的答案。@Walter-我的英语太差了,欢迎任何帮助;但是,在这种情况下,你的编辑也大大改进了我的答案。