私は、特定の述語でベクトルをソートできるようにする必要があるシステムに取り組んでいますが、クラスで制御することはできません。基本的に、私はそれらに派生クラスを渡し、彼らは盲目的にそれをソートします。
「楽しい癖」の1つとして、並べ替えパターンの1つは入力の順序です。これが私がこれまでに得たものです。
struct Strategy
{
virtual bool operator()(const Loan& lhs, const Loan& rhs) const = 0;
};
struct strategyA : public Strategy
{
bool operator()(const Loan& lhs, const Loan& rhs) const
{
return true;
}
};
struct strategyB : public Strategy
{
bool operator()(const Loan& lhs, const Loan& rhs) const
{
return lhs.getID() > rhs.getID();
}
};
struct strategyC : public Strategy
{
bool operator()(const Loan& lhs, const Loan& rhs) const
{
return lhs.getFee() > rhs.getFee();
}
};
明らかに、strategyAは反射的であるため、使用できません。falseに設定すると、すべてが同等に扱われ、データに別れを告げることができます。
これが私の質問です。何も変更しないベクトルをソートするための述語関数を定義する方法はありますか?
おそらく最も簡単な解決策は、エントリ変数の順序をLoanクラスに追加するか、ペアの1つと組み合わせる方法であることを認識しています。あるいは、ソーターにそれを使用するかどうかを指示する述語を使用してパラメーターをフィードすることもできます。