PS в следующих строках: Лист отчета содержит subject --------- marks
. Сортируйте отчет по меткам в порядке убывания. Если 2 предмета имеют одинаковые метки, сортируйте эти 2 строки по предметам, т.е. предметы с именем, которое появляется первым в лексикографическом порядке, находятся сверху. Какой будет хороший подход для решения этой PS? Это не сильно помогает
Я изначально пытался переопределить std :: map. Однако люди, пытающиеся помочь, отметили, что это не очень хорошая идея. Это был мой подход, который также привел меня в замешательство относительно того, где я на самом деле присваиваю значения ?:
class map : public std::map<std::string, long, std::greater<>> {
public:
bool insert(std::pair<std::string, long> pair) {
//where do I actually "put" the values??
}
};
Я пытался использовать
typedef std::function<bool(std::pair<std::string, long>, std::pair<std::string, long>)> compareFunc;
compareFunc compare = [](std::pair<std::string, long> lmark, std::pair<std::string, long> rmarks) {
if (lmarks.second > rmarks.second)
return true;
else if ((lmarks.second == rmarks.second) && (lmarks.first < rmarks.first))
return true;
return false;
};
std::set<std::pair<std::string, long>, compareFunc> marks;
Но во время выполнения это не удается
Пожалуйста, предложите мне лучший вариант