Компаратор функции sort для структуры
Имеется вектор структур вида :
struct Data
{
pair<uint16_t,uint16_t>my_pair;
uint32_t c;
};
vector<struct Data>My_Data;
И функция сортировки :
void Sort()
{
bool my_custom_comparison(?)
{
?
}
sort(My_Data.begin(),My_Data.end(),my_custom_comparison());
cout<<"Sorting is over";
}
Нужно отсортировать вектор My_Data по параметру "c". Обычным sort() это сделать нельзя. Какой компаратор надо написать?
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Начнем с того, что вложенных функций не бывает. my_custom_comparison всовывать в Sort не получится. Разве что лямбда-функцией.
А какой должна быть эта функция - читаем тут: https://en.cppreference.com/w/cpp/algorithm/sort
Итак,
sort(My_Data.begin(),My_Data.end(),[](const Data&a, const Data&b){return a.c < b.c;});
Если вы хотите именно с помощью функции - определите ее вне других функций как
bool my_custom_comparison(const Data&a, const Data&b)
{
return a.c < b.c;
}
и пользуйтесь:
sort(My_Data.begin(),My_Data.end(),my_custom_comparison);