我的Edge对象中有一个using Reinforced.Typings.Ast;
using Reinforced.Typings.Ast.TypeNames;
using Reinforced.Typings.Generators;
class ClientAppender : InterfaceCodeGenerator
{
public override RtInterface GenerateNode(Type element, RtInterface result, TypeResolver resolver)
{
var existing = base.GenerateNode(element, result, resolver);
if (existing == null) return null;
if (this.Context.Location.CurrentNamespace == null) return existing;
RtInterface clientIFace = new RtInterface()
{
Name = new RtSimpleTypeName(string.Format("{0}Client", element.Name))
};
this.Context.Location.CurrentNamespace.CompilationUnits.Add(clientIFace);
return existing;
}
}
我有3个名为height weight length的int字段。我已经使用元素填充了我的矢量,现在我想根据重量从最大到最小来对矢量进行排序。我怎么能这样做。
答案 0 :(得分:0)
为此,您的班级Edge
必须重载运营商<
。
然后,您可以使用sort()
#include <algorithm>
sort(graph.begin(), graph.end());
还可以将其他运算符重载为>
,>=
,<=
,==
,!=
。
答案 1 :(得分:0)
假设Edge
看起来像
struct Edge {
int height, weight, length;
}
添加类似
的功能bool compareWeight(const Edge& l, const Edge& r) {
return l.weight > r.weight;
}
并使用algorithm
中的sort
for(int i = 0; i < graph.size(); i++) {
std::sort(graph[i].begin(), graph[i].end(), compareWeight);
}
这将按重量对Edge
的每个向量进行排序。