我有一個std :: multiset,它存儲std :: pair。我希望第一個屬性對唯一性沒有限制,但我希望第二個屬性是唯一的。所以,我決定把我自己的功能傳遞給multiset,以實現這一點(如果不是,請讓我知道)。將我的compar函數傳遞給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 2014-09-11 01:06:04
我不明白你的獨特性標準。你正在使用'multiset',所以比較相同的多個鍵將被存儲在容器中。 – Praetorian 2014-09-11 01:14:41
我認爲主要問題是lambda需要採用'const&'或值 – 2014-09-11 01:19:33