У меня есть std :: multiset, в котором хранится std :: pair. Я хочу, чтобы у первого атрибута не было ограничений на уникальность, но я хочу, чтобы второй был уникальным. Итак, я решил передать свою собственную функцию в мультимножество, чтобы добиться этого (если не сообщите мне).Передача моей функции сравнения в std :: multiset с C++ 11
На основании this Ответ, я написал аналогичную функцию, но это не удается, и я понятия не имею, почему (нет идеи λ - и я греческий :)).
auto f = [](std::pair<float, int>& a, std::pair<float, int>& b) {
return (a.first < b.first && a.second != b.second);
};
Ошибка:
error: expression ‘#‘lambda_expr’ not supported by dump_expr#<expression error>’ is not a constant-expression
sorry, unimplemented: non-static data member initializers
error: unable to deduce ‘auto’ from ‘<expression error>’
Это означает, что я на ложном пути @TC . Что мне делать? – gsamaras
Я не понимаю ваш критерий уникальности. Вы используете «multiset», поэтому в контейнере будут храниться несколько ключей, которые сравнивают одинаковые значения. – Praetorian
Я думаю, что главная проблема заключается в том, что лямбда нужно принимать 'const &' или по значению –