Если это всегда порядок сортировки дат, и вы управляете этим типом, вы можете реализовать операторы сравнения operator<
, operator>
, operator<=
, operator>=
, operator==
и operator!=
для этого типа. .
В противном случае традиционный подход состоит в том, чтобы модифицировать алгоритм сортировки так, чтобы он принимал пользовательский компаратор (по соглашению, имеющий интерфейс operator<
, который требует от вас сравнения) из вызывающих, что-то вроде:
template <typename T, typename Compare>
void bubbleSort(vector<T> &vec, Compare compare) {
// as you currently have, but using compare(a, b) instead of a < b
}
template <typename T>
void bubbleSort(vector<T> &vec) {
bubbleSort(vec, std::less<>());
}
Тогда вызывающие абоненты могут использовать isAfter
следующим образом:
bubbleSort(dates, [](const Date& a, const Date& b) { return isAfter(b, a); });