Когда мы предоставляем функцию сравнения для std::sort
, мы используем следующую перегрузку:
template< class RandomIt, class Compare >
void sort( RandomIt first, RandomIt last, Compare comp );
в котором функция сравнения для std::sort
должна иметь следующий синтаксис:
bool cmp(const Type1 &a, const Type2 &b);
Но, как вы можете видеть, a
и b
могут иметь разные типы. cppreference говорит:
Типы
Type1
иType2
должны быть такими, чтобы объект типаRandomIt
мог быть разыменован, а затем неявно преобразован в оба из них.
Но я до сих пор не могу точно понять, как мы можем иметь 2 разных типа в одном массиве, когда мы пытаемся отсортировать его.
Может ли кто-нибудь предоставить небольшой пример с разными типами для функции сравнения std::sort
?