按对象矢量向量中的对象字段排序

时间:2018-03-17 07:41:09

标签: c++ c++11

我的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字段。我已经使用元素填充了我的矢量,现在我想根据重量从最大到最小来对矢量进行排序。我怎么能这样做。

2 个答案:

答案 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的每个向量进行排序。