Сортировка multiset

129
11 июня 2019, 17:10

Есть multiset<multiset<int>> cnt; Хочу отсортировать cnt по последнему элементу multiset-ов. Как это сделать?

Answer 1

Нужно передать 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

Пример

READ ALSO
Visual Studio выдаёт ошибку C4996 при попытке скомпилировать этот проект

Visual Studio выдаёт ошибку C4996 при попытке скомпилировать этот проект

В Visual C++ рекомендуется использовать функцию strcat_s, и другие функции с _s на концеОна принимает размер буфера, по этому при ее использовании...

116
Как найти квадрат в двумерном массиве?

Как найти квадрат в двумерном массиве?

Нашел задачу на двумерный массив и не понятно как код писать, сам недавно начал учит с++

187
Реализация ассемблерной вставки [закрыт]

Реализация ассемблерной вставки [закрыт]

Найти сумму положительных элементов массива A = {a [i]}, что удовлетворяют условию: b <= a [i] <= dНаписал код но не могу понять почему оно не работает...

117
Стандартная консоль в CLion

Стандартная консоль в CLion

Как сделать запуск программы из CLion в стандартную консоль OS, а не в встроенную в CLion?

139