我想使用std::list
STL容器来对包含的项目应用订单。但是,我要使用的项目是由自定义类型和代表重量的typedef
组成的自定义double
。如何确保可以根据元素的权重对结果列表进行排序?
typedef std::pair<linearVariable*, double> weightedVariable;
[...]
std::list<weightedVariable> tmp;
我该怎么做才能确保列表是根据配对的第二部分(权重)排序的?有什么更好的方法来维护自定义类型的顺序?在我的情况下,权重不是
linearVariable
的属性,但可以计算得出。 最佳答案
您可以将 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();