Я пытаюсь отсортировать свой вектор указателей классов vector <Building*> company
. Ниже мой код
sort(company.begin(), company.end(), [] (Building* lhs, Building* rhs)
{
return (lhs->getCompanyName() > rhs->getCompanyName() && lhs->height() > rhs->height());
});
. Я пытаюсь отсортировать на основе двух атрибутов в классе с именами getCompanyName()
и height()
. getCompanyName
должен располагаться в алфавитном порядке от A до Z, а height
- в порядке убывания.
Вышеупомянутая сортировка не работает.
Однако, если я разделю два условия вверх на два ниже:
sort(company.begin(), company.end(), [] (Building* lhs, Building* rhs)
{
return lhs->getCompanyName() > rhs->getCompanyName();
});
sort(company.begin(), company.end(), [] (Building* lhs, Building* rhs)
{
return lhs->height() > rhs->height();
});
Вектор будет отсортирован правильно, но только на основе одного атрибута.
Что-то не так с моим кодом сортировки 2 атрибутов?
Изменить:
getCompanyName()
будет отсортировано первым на основе AZ.
Только после того, как getCompanyName()
будет отсортировано, height()
будет отсортировано в порядке убывания.
Пример отсортированного ожидаемого вывода:
Company Name: AQA
Height: 300
Company Name: AFE
Height: 200
Company Name: BAC
Height: 600
Company Name: BFE
Height: 100
Company Name: CJE
Height: 1200