Mod*_*ass 3 c++ containers stl compare list
我想使用std::listSTL容器能够对包含的项目应用订单.但是,我想要使用的项目是typedef由自定义类型和double表示权重的自定义组成.如何确保我可以根据元素的权重对结果列表进行排序?
typedef std::pair<linearVariable*, double> weightedVariable;
Run Code Online (Sandbox Code Playgroud)
[...]
std::list<weightedVariable> tmp;
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能确保列表根据对的第二部分(权重)进行排序?有没有更好的方法来维护自定义类型的顺序?在我的情况下,重量不是的属性linearVariable,但它可以计算.
您可以使用std::list::sort自定义比较功能:
inline bool comp(const weightedVariable& lhs, const weightedVariable& rhs)
{
return lhs.second < rhs.second;
}
tmp.sort(comp);
Run Code Online (Sandbox Code Playgroud)
另一种选择是提供bool operator<和使用std::list::sort():
inline bool operator < (const weightedVariable& lhs, const weightedVariable& rhs)
{
return lhs.second < rhs.second;
}
tmp.sort();
Run Code Online (Sandbox Code Playgroud)