Есть multiset<multiset<int>> cnt;
Хочу отсортировать cnt по последнему элементу multiset-ов.
Как это сделать?
Нужно передать std::multiset собственную операцию сравнения. Сравнение должно быть строгим слабым. Или по-простому - операция "меньше". Это должно быть нечто, что можно вызвать как функцию с двумя аргументами, и получить bool на выходе. Агрументы должны быть того типа, который храниться в контейнере - в вашем случае std::multiset<int>
Я, для таких целей, предпочитаю использовать структуру с оператором (). Но вы можете использовать функцию или лямбду.
struct LastElementLess{
bool operator()(const std::multiset<int> &first, const std::multiset<int> &second) const{
if(second.empty()){
return false;
}
if(first.empty()){
return true;
}
return *first.rbegin() < *second.rbegin();
}
};
//...
std::multiset<std::multiset<int>, LastElementLess> ssi
Пример
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости