我有一个结构:
struct particle {
double x;
double y;
double Th;
double wt;
};
我还有一个向量vector<particle> vec
如何根据增加的数据成员vec
对向量wt
进行排序我希望我的向量按double wt
递增排序我想到使用std::sort
但我如何补偿结构?
答案 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 ++的美观和灵活性。