Я работаю над системой, где мне нужно иметь возможность сортировать вектор по заданному предикату, который мои классы не должны контролировать. В принципе, я передаю им производный класс, и они слепо сортируются по нему.Как я могу определить сортировку «Do-Nothing»?
Как один из «восхитительных причуд», одним из шаблонов сортировки является порядок ввода. Вот что у меня до сих пор.
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 рефлексивно, она не может быть использована, и если установить его на ложь, он будет относиться ко всему, как равно и я могу поцеловать меня на прощание данных.
Итак, вот мой вопрос. Есть ли способ определить предикатную функцию для сортировки вектора, который ничего не изменит?
Я знаю, что, возможно, самым простым решением является добавление порядка ввода переменной в класс займа или партнер с одним в паре. В качестве альтернативы я мог бы подать параметр с помощью предиката, который сообщает сортировщику, использовать его или нет.
«Стратегия» не должна зависеть от деталей реализации сортировки. В «Стратегии» нельзя полагаться, что он будет использоваться со стабильным алгоритмом сортировки. – Vlad
@ Vlad: Не говорите мне;) – Dario
ну, мой комментарий был нацелен на topicstarter. ;) – Vlad