为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