如何对struct容器的矢量进行排序?

时间:2018-01-19 14:07:46

标签: c++ sorting vector struct

我有一个结构:

struct particle {
double x;
double y;
double Th;
double wt;
};

我还有一个向量vector<particle> vec如何根据增加的数据成员vec对向量wt进行排序我希望我的向量按double wt递增排序我想到使用std::sort但我如何补偿结构?

1 个答案:

答案 0 :(得分:3)

实际上很容易:

std::sort(vec.begin(), vec.end(), 
    [](const particle& a, const particle& b) -> bool 
    { 
        return a.wt < b.wt;
    } 

这会根据wt的值按递增顺序对矢量进行排序。

您还有另一种选择:为operator<定义particle,如下所示:

bool operator<(const particle& a, const particle& b)
{
    return a.wt < b.wt;
}

然后,在致电std::sort时,您可以这样做:

std::sort(vec.begin(), vec.end());

使用上面的代码,std::sort会在每对operator<上调用particles,现在有超载来比较它们。

如果你注意到,我在开头使用的lambda与我上面使用的函数重载相同。这很容易说明STL和C ++的美观和灵活性。