3

std::list含まれているアイテムに注文を適用できるように、STL コンテナーを使用したいと考えています。ただし、使用したいアイテムは、カスタム タイプと重量を表す でtypedef構成されるカスタムです。double結果のリストを要素の重みに基づいてソートできるようにするにはどうすればよいですか?

typedef std::pair<linearVariable*, double> weightedVariable;

[...]

std::list<weightedVariable> tmp;

リストがペアの 2 番目の部分 (重み) に従ってソートされるようにするにはどうすればよいですか? カスタム型の順序を維持するためのより良い方法はありますか? 私の場合、重みは のプロパティではありませんが、linearVariable計算できます。

4

2 に答える 2

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();
于 2012-12-03T10:00:30.217 に答える