爲std::multiset
模板參數需要一個類型,MyObjectComp
不是一個類型,而是代替一個函數名稱。您可以使用decltype
來獲得它的類型像
typedef std::multiset<MyObject, decltype(MyObjectComp)*> MyObjectMultiSet;
或者你也可以自己指定類型像
typedef std::multiset<MyObject, bool(*)(const MyObject&, const MyObject&)> MyObjectMultiSet;
還要注意一般是仿函數/λ比使用功能的編譯器比較有效可以更輕鬆地優化代碼。我會建議使用
struct MyObjectComp {
bool operator()(const MyObject& lhs, const MyObject& rhs) {
return lhs.mTick < rhs.mTick;
}
};
typedef std::multiset<MyObject, MyObjectComp> MyObjectMultiSet;
或
auto MyObjectComp = [](const MyObject& lhs, const MyObject& rhs) {
return lhs.mTick < rhs.mTick;
};
typedef std::multiset<MyObject, decltype(MyObjectComp)> MyObjectMultiSet;
可能的複製[使用定製的std ::設置比較](http://stackoverflow.com/questions/2620862/using-custom-stdset-comparator) – ashiquzzaman33