我想使用std::list
STL容器来对包含的项目应用订单。但是,我要使用的项目是自定义typedef
,其中包含自定义类型和代表权重的double
。如何确保我可以根据元素的权重对结果列表进行排序?
typedef std::pair<linearVariable*, double> weightedVariable;
[...]
std::list<weightedVariable> tmp;
我需要做些什么来确保列表根据对的第二部分(重量)进行排序?有没有更好的方法来维护自定义类型的顺序?在我的情况下,权重不是linearVariable
的属性,但可以计算。
答案 0 :(得分:8)
您可以将std::list::sort
与自定义比较功能结合使用:
inline bool comp(const weightedVariable& lhs, const weightedVariable& rhs)
{
return lhs.second < rhs.second;
}
tmp.sort(comp);
另一个选择是提供bool operator<
并使用std::list::sort()
:
inline bool operator < (const weightedVariable& lhs, const weightedVariable& rhs)
{
return lhs.second < rhs.second;
}
tmp.sort();
答案 1 :(得分:0)